у меня возникли проблемы при передаче данных (массива) между компонентами через @Input, есть некоторый код. родитель.component.ts:
public ngOnInit() {
this.applications = new Array<ApplicationEntryInterface>();
(...)
let shortTermData = new ShortTermApplicationAdapter(application);
this.applications.push(shortTermData);
console.log(this.applications);
}
этот console.log показывает мне обычный массив parent.component.html
<student-application-overview [applicationsEntry]="applications"></student-application-overview>
Дочерний компонент:
@Input('applicationsEntry') public applicationsEntry: Array<ApplicationEntryInterface>;
ngOnChanges() {
console.log(this.applicationsEntry);
console.log(this.applicationsEntry.length); <--- shows 0
}
который показывает Невозможно перебрать его в for, foreach и т. д., работает только *ngFor, this.applicationsEntry.length равно 0, как мне с этим справиться? Также я использовал @Input (..) set (..) { (..) } и дал тот же результат
forEach
илиlength
в коде вашего компонента? Мое лучшее предположение состоит в том, что массив, который вы передаете, не будет сразу доступен в вашем дочернем компоненте, особенно если*ngFor
в вашем шаблоне HTML работает - person Jack Koppa   schedule 02.10.2017changeTrigger
), не связанный с асинхронным вызовом, который вы обновляете, когда возвращаете результат своего асинхронного вызова. Когда вы вызываетеchangeTrigger++
в родительском, это вызоветngOnChanges
в дочернем - person Jack Koppa   schedule 02.10.2017