Angular Service变量未在组件中更新

时间:2019-01-29 11:07:08

标签: angular http service

我在函数中更新了服务的布尔变量。我想在组件中使用此变量更改,但是服务变量未在组件中更新。

service.ts

isUpdating: boolean;
updateTheVairable() {
     this.isUpdating = true;
}

component.ts

methodRequiringUpdateFromService() {
    if(this.service.isUpdating) {
        //do something
    }
}

服务变量中的 isUpdating 变量已分配为true,但未在组件中更新。任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

您可以使用Subject,或者如果需要初始值,则可以在服务中使用BehaviorSubject中的rxjs,然后在组件中进行预订。

服务:

isUpdatingSubject: BehaviorSubject<boolean> = new BehaviorSubject(false); // inital value is "false"

isUpdating = this.isUpdatingSubject.asObservable();

setUpdateState = (newState) => {
   this.isUpdatingSubject.next(newState);
}

组件:

ngOnInit(){ // You may use another method, such as "constructor" or custom one
  this.service.isUpdating.subscribe((isUpdating) => {
    if(isUpdating){
      //do something
    }
  })
}

注意:不要忘记在ngDestroy上取消订阅该服务。

答案 1 :(得分:-2)

您尚未在service.ts中调用方法-updateTheVairable()来设置值。

methodRequiringUpdateFromService(){
this.service.updateTheVairable()
if(this.service.isUpdating){
//do something
}
}