私は(輸入なし)このコードの主なコンポーネントがあります:テンプレートで異なるコンポーネントで非同期環境でアイテムを取得するにはどうすればよいですか?
class AppComponent {
products = null;
productsUpdated = new EventEmitter();
constructor(product_service: ProductService) {
this._product_service = product_service;
this._product_service.getList()
.then((products) => {
this.products = products;
this.productsUpdated.emit(products)
});
}
}
: 製品をソートするための<left-sidenav [productsReceived]="productsUpdated"></left-sidenav>
とコンポーネント:すべてが描画されるときに
class LeftSidenavComponent {
@Input() productsReceived;
@Output() productsSorted = new EventEmitter();
categories = []
constructor(product_list_service: ProductListService) {
this._product_list_service = product_list_service;
}
ngOnInit() {
this.productsReceived.subscribe((products) => {
this.categories = products.map((elem) => {
return elem.category
})
});
}
}
を、categories
LeftSidenavComponent
の配列は空です。 イベントエミッタは、LeftSidenavComponent
よりも早く起動しますが、それを処理する方法はわかりません。
で始まるこの調整を試してください。@Output()productsUpdated = new EventEmitter();あなたが引き続き問題を抱えている場合は、プランナーを作成してください。 – JGFMK
[コンストラクタ内で約束をしないようにする](https://stackoverflow.com/q/24398699/1048572)をお勧めします。この問題は、イベントを発生させることと同じです。 – Bergi