использование субъекта поведения для общих служб - PullRequest
0 голосов
/ 11 декабря 2018

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')
}

У меня есть домашний компонент, в котором, открыв 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.tsngOnInit вызывается до api success завершения вызова.Как я могу преодолеть этот сценарий, использую ли я поведенческие объекты и угловые компоненты, неправильно синхронизацию JavaScript?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете отфильтровать начальное значение,

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