共享服务的行为主题用法

时间:2018-12-11 11:35:28

标签: angular observable behaviorsubject

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同步?

1 个答案:

答案 0 :(得分:0)

您可以过滤初始值,

ngOnInt(){
  this.sharedService.intialValue
  .pipe(filter(v=>v))
  .subscribe(res => {
     console.log(res) 
  });
}