Задать вопрос
@METAH

Как правильно получить массив строк из WebAPI?

Всем привет.
Я новичок в веб разработке, так что сильно не пинайте пожалуйста :)
Итак, есть некий компонент. вот код конструктора в typescript:

export class TestC {
public CBVals: string[];

constructor(http: Http, @Inject('BASE_URL') baseUrl: string) {
http.request(baseUrl + 'api/Data/GetCBVals').subscribe(response => { this.CBVals = response.json()});
console.info("CBVALS= " + this.CBVals);
}
}

Вот код серверной части на .NET Core 2.0:
[HttpGet("[action]")]
public List GetCBVals()
{
List vals = new List();
vals.Add("one");
vals.Add("two");
vals.Add("three");
return vals;
}

Если судить по консоли - переменная this.CBVals=undifined. Однако в этой же консоли видно ответ сервера - ["one","two","three"]

Вопрос - почему эта переменная неопределенная?
И вопрос вдогонку - как передать массив строк обратно WebAPI?

Совсем уже голову сломал
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
1. У вас вывод в консоль:
console.info("CBVALS= " + this.CBVals);

срабатывает перед тем, как получен ответ.

Имеет смысл поместить этот код после того, как будет получен ответ:

this.CBVals = response.json();
console.info("CBVALS= " + this.CBVals);

2. Второй момент, что за "this" приходит из "subscribe"? - Возможно, это совсем не экземпляр "TestC".
Для надежности внутри конструктора первой строчкой предлагаю объявить:
var that = this;

а в оставшейся части кода конструктора все "this" поменять на "that".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Goodt Екатеринбург
от 100 000 до 150 000 ₽
Selecty Москва
До 350 000 ₽
Data World Москва
от 180 000 до 210 000 ₽