Задать вопрос
@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?

Совсем уже голову сломал
  • Вопрос задан
  • 56 просмотров
Подписаться 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".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы