我將異步數據從父組件傳遞到子組件。而子組件需要知道數據的長度才能做某件事。Angular 2如何讓子組件等待異步數據準備就緒
問題是這樣的,問題在於此時數據不可用,子組件無法使用'Oninit'掛鉤來完成工作。那麼,我該如何做到這一點?
父組件的代碼如下所示:
@Component({
moduleId: module.id,
selector: 'parent',
template: `<div>
<child [items]="items | async">
</div>`
})
export class Parent implements OnInit {
items: Items[];
constructor(
private itemService: ItemService,
private router: Router
) { }
ngOnInit() {
this.itemService.getItemss()
.subscribe(
items => this.items = items,
error => this.errorMessage = <any>error
);
}
}
和子組件的樣子:
@Component({
moduleId: module.id,
selector: 'child',
template: `<div>
<div *ngFor="let itemChunk of itemChunks"></div>
content here
</div>`
})
export class child implements OnInit{
@Input() items: Items[];
itemChunks: Items[][];
ngOnInit() {
this.itemChunks = this.chunk(this.Items);
}
chunk(items: Items[]) {
let result = [];
for (var i = 0, len = items.length; i < len; i += 6) { // this line causes the problem since 'items' is undefined
result.push(items.slice(i, i + 6));
}
return result;
}
}
什麼是處理這個最好的做法?
結束採取選項2.行爲完全如預期。非常感謝。 –
@Chybie,感謝您複製我的答案:d – Milad
@Milad,對不起?我不明白你。 – Chybie