shared-service.ts
intialValue: BehaviorSubject<string> = new BehaviorSubject(null);
setInitialValue(value: any){
this.intialValue.next(value)
}
app.component.ts
async ngOnInit(){
//api call
await this.sharedService.setInitialValue('api return value')
}
我确实有home组件,通过打开localhost:4200/home
然后刷新它。我相信app.component.ts
被调用,并且api在ngOnInit
中的home.component.ts
被调用之前返回一个值。
home.component.ts
ngOnInt(){
this.sharedService.intialValue.subscribe(res => {
console.log(res) //it should be 'api return value' which is set in app.component but it showing null.
});
}
我观察到home.component.ts
的{{1}}在ngOnInit
呼叫完成之前被呼叫。我该如何解决这种情况,我是否使用behaviourSubject和angular组件,以错误的方式进行javascript同步?
答案 0 :(得分:0)
您可以过滤初始值,
ngOnInt(){
this.sharedService.intialValue
.pipe(filter(v=>v))
.subscribe(res => {
console.log(res)
});
}