получить данные Json на ITest - PullRequest
0 голосов
/ 16 июня 2019

Цель:
Получите данные из json в "test: ITest [];" а затем отобразить его с помощью console.log

Проблема:
Код не работает. Какую часть я пропускаю?

Информация:
Я новичок в Angular

Спасибо!


Услуги

  getData2(): Observable<ITest[]> {
    return this.http.get<ITest[]>('https://api.github.com/users/hadley/orgs');
  }

export interface ITest {
  login: string,
  node_id: string
}

Компонент

  public test: ITest[];

  ngOnInit() {
    this.getData2()
  }


  getData2() {
    this.asdfService.getData2().subscribe(res => { this.test = res });

    console.log(this.test)
  };
export interface ITest {
  login: string,
  node_id: string
}

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

добро пожаловать в угловой. Единственная проблема с вашим кодом -

  getData2() {
    this.asdfService.getData2().subscribe(res => { this.test = res });

    console.log(this.test)
  };

должно быть так

  getData2() {
    this.asdfService.getData2().subscribe(res => { 
       this.test = res;
       console.log(this.test);
    });
  };

код в подписке вызывается асинхронно, поэтому, если вы не поместите console.log в подписку, он не будет ждать выполнения this.test = res. это называется реактивным программированием, и оно является фундаментальным строительным блоком углового программирования.

это является хорошей отправной точкой для начала.

0 голосов
/ 16 июня 2019

Ваш метод getData2 возвращает Observable, который может быть разрешен через некоторое время, но вызов console.log происходит сразу после subscribe, поэтому к моменту вызова console.log Observable, возможно, не будет разрешен .

Попробуйте это:

  getData2() {
    this.asdfService.getData2().subscribe(res => { 
        this.test = res
        console.log(this.test)
    });  
  }

Таким образом, вы вызываете console.log только когда получаете новое значение для this.test

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...