我将异步数据从父组件传递到子组件。而子组件需要知道数据的长度才能做某件事。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