在我的项目中,我想在app.component初始化期间调用一个api,子组件应该等到app.comonent在ngOnInit()中完成
在app.component.ts中:
ngOnInit() {
// call getx()
}
在child.component.ts中:
ngOnInit(){
// call gety()
}
执行顺序: 希望gety()等到getx()完成。
答案 0 :(得分:0)
也许您可以尝试Promise之类的东西:
在app.component.ts
中async ngOnInit(): Promise<bool> {
return new Promise<bool>(resolve,reject)=>{
// call getx()
resolve(true); //or anything you want ot return maybe from getx()
});
}
在child.component.ts中。extends
您的app.component
async ngOnInit(): Promise<bool>{
await super.NgOnInit();
// call gety()
resolve(true); //or anything you want ot return maybe from gety()
});
}
希望它可以帮助您..也许您还可以通过其他方式对其进行存档(例如从app.component.ts中进行发射,然后在子组件中进行监听。.或其他)..希望它可以对您有所帮助! !!
答案 1 :(得分:0)
在您的应用程序组件中,您可以拥有一个属性:
wasGetXExecuted = false;
在执行getX()函数后将其设置为true。
您可以在子组件中创建输入,例如:
@Input() wasGetXExecuted: boolean;
然后在子组件中,您可以实现ngOnChanges生命周期挂钩,例如:
ngOnChanges(changes: SimpleChanges) {
if (changes['wasGetXExecuted'] != null) {
if (changes['wasGetXExecuted'].previousValue === false &&
changes['wasGetXExecuted'].currentValue === true) {
this.getY();
}
}
}
您还需要在应用程序组件模板中绑定输入:
<child-component [wasGetXExecuted]="wasGetXExecuted"></child-component>