0

Подскажите пожалуйста. У меня есть web api на c#, который возвращает модель аккаунта по его айди, это все хорошо, но я не могу эти данные перекинуть в переменную в angular, то есть.

public account: Account; // переменная куда кидаем

ngOnInit() {
    this.accountService.getById(1).subscribe(
      (data: Account) => {
        console.log(data); // возвращает массив 
        this.account = data; // пытаемся присвоить, если я тут же закину вывод в консоль, то все пройдет, но дальше переменная пустая.
      },
      error => console.log(error) 
    );
    this.initForm();
    console.log(this.account); // возвращает ничего в консоль, просто нет данных
  }

getById(id: number): Observable<Account> {
    return this.http.get<Account>(this.url + "/" + id);
  } // так я получаю данные
  • Что у Вас в console.log(data);? – Volodymyr Rets Oct 22 '18 at 08:22
  • Просто для проверки, приходят ли данные или нет, они поступают, но например обратиться к определенному полю data.name он не дает, говорит не существует, хотя в модели такое поле есть – Евгений Oct 22 '18 at 08:26
  • Почитайте про асинхронность в js. – Stepan Kasyanenko Oct 22 '18 at 08:32
  • Я понимаю, но дело в том, что данные приходят, но я не могу обратиться к их полям или же перекинуть в другую переменную – Евгений Oct 22 '18 at 08:34
  • @Евгений, слушайте ораторов выше - читайте про асинхронность, this.account = data сеттится после console.log(this.account); – arturovt Oct 22 '18 at 09:19
  • Даже если вывожу данные на форму, просто пустота выходит. – Евгений Oct 22 '18 at 09:32
  • Судя из кода, вывод в форму у Вас какой-то свой, через initForm? Если да, то Ваш подход в корне не верный, о чем Вам пытаются донести. – Hooter Nov 02 '18 at 14:54
  • Это просто сделайте так: добавьте initForm() в subscribe this.accountService.getById(1).subscribe( (data: Account) => { console.log(data); // возвращает массив this.account = data; this.initForm(); }, error => console.log(error) ); – GRozny Dec 12 '18 at 11:00

0 Answers0