Передача асинхронных данных в дочерний компонент с помощью ngOnChanges не работает - PullRequest
0 голосов
/ 02 июля 2019

После этого урока , точного решения n 2, я попытался передать асинхронные данные дочернему компоненту следующим образом:

Родительский компонент ts:

ngOnInit() {
    this.route.queryParams.subscribe(params => { 
   this.networkService.getAttivitaById(this.idAttivita).subscribe((att:Attivita[]) => {
          this.attivita = att[0];
        })
  }

html родительского компонента:

<app-dettaglio-attivita [attivita]="attivita" [isModifica]="isModifica" [intervento]="intervento"></app-dettaglio-attivita>

А потом дочерний компонент:

@Input() attivita: Attivita;
[...]

ngOnChanges(changes: SimpleChanges) {
    if(changes['attivita']){
      this.initPage();
      console.log("LOADED " + this.attivita.id);
    }
  }

Когда я захожу на страницу, в консоли она печатается в следующем порядке:

не может прочитать свойство 'id' из неопределенного

ссылаясь на строку console.log("LOADED " + this.attivita.id); и сразу после меня:

enter image description here

Кажется, в два раза поймать изменение. Но каковы два изменения? В учебнике нет ни слова об этом. Как я могу справиться с этим без ошибки?

1 Ответ

2 голосов
/ 02 июля 2019

Вам нужно проверить, хорошо ли существует currentValue.

ngOnChanges(changes: SimpleChanges) {
    const { attivita } = changes;
    if (attivita && attivita.currentValue) {
      this.initPage();
      console.log("LOADED " + this.attivita.id);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...