Переменная Angular Service не обновляется в компоненте - PullRequest
0 голосов
/ 29 января 2019

У меня есть логическая переменная в службе, которая обновляется в функции.Я хочу использовать это изменение переменной в компоненте, но служебная переменная не обновляется в компоненте.

service.ts

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

компонента.ts

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

Переменная isUpdating в служебной переменной присваивается значению true, но не обновляется в компоненте.Любая помощь будет принята с благодарностью :)

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы можете использовать 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.

0 голосов
/ 29 января 2019

Вы не вызывали метод - updateTheVairable () в service.ts для установки значения.

methodRequiringUpdateFromService(){
this.service.updateTheVairable()
if(this.service.isUpdating){
//do something
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...