我有這個代碼主要成分(不含進口):如何在異步環境中獲取不同組件中的項目?
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
爲空。 我認爲productUpdated
事件發射器會在LeftSidenavComponent
之前觸發,但不知道如何處理它。
嘗試此調整以 開頭@Output()productsUpdated = new EventEmitter();如果您仍然遇到問題,請創建一個運動員。 – JGFMK
我建議[不要在承建商內部有承諾](https://stackoverflow.com/q/24398699/1048572)。問題與發射事件相同。 – Bergi