我有父母和孩子两个组成部分
父级正在解析构造函数中的promise,子级正在将promise的结果作为@Input()参数接收
除了afterViewCheck和afterContentCheck之外,孩子没有收到生活提示挂钩中的承诺结果,我想避免这些。
我还想避免共享服务在behaviorSubject或类似内容中包含共享数据
所以问题是,在以promise的结果作为输入参数构造模板之前,我可以等待promise吗?
上级:
// html: <app-chil [brands]="brands"></>
brands: Brand[] = []
constructor() {
this.getBrands()
}
async getBrands() {
this.brands = await new Promise<Brand[]>(resolve =>
this.equipmentService.getBrands().subscribe(brands => resolve(brands)))
}
儿童:
@Input() brands: Brand[] = []
constructor() { }
ngAfterViewInit() {
console.log(this.brands) // receive brands here
}
最佳答案
使用安装器,您无需使用任何生命周期挂钩及其清洁器。
brands: Brand[] = [];
constructor() {
this.getBrands()
}
async getBrands() {
this.brands = await new Promise<Brand[]>(resolve =>
this.equipmentService.getBrands().subscribe(brands => resolve(brands)))
}
儿童:
private _brands: Brand[] = [];
@Input() set brands(data: Brand[]) {
this._brands = data;
console.log(data);
}
constructor() { }