Как обновить значение объекта по клику с помощью поведения субъекта Angular 5? - PullRequest
0 голосов
/ 16 октября 2018

Service.ts: я создал объект в своем файле service.ts. Теперь я хочу обновить значения объекта с помощью BehaviorSubject, чтобы я мог использовать этот обновленный объект в моих различных компонентах

private _menuUpdate = {
  bankFlag: false,
  contactsFlag: false,
  educationDataFlag: false,
  examFlag: false,
  existingRelationShipFlag: false,
  nomineeFlag: false,
  personalFlag: false,
  supportDocsFalg: false,
  workExpFlag: false
}

 public menuDisableStatus = new BehaviorSubject<Object>(this._menuUpdate);
 menuStatus = this.menuDisableStatus.asObservable();

changeStatus(statusObj) {
  this.menuDisableStatus.next(statusObj);
}

Теперьв моем компоненте component1.ts Пример

    click(){
      this.menuDisableStatus.educationDataFlag = true;          
      this.mliService.changeStatus(this.menuDisableStatus.educationDataFlag);          
    }

Теперь в моем компоненте2.ts Пример

 this.mliService.menuStatus.subscribe((data) => {         
    this.menuDisableStatus = data;       
  });
 console.log(this.menuDisableStatus);

Здесь консоль дает мне «true» вместо объекта обновления.

1 Ответ

0 голосов
/ 16 октября 2018

В вашем компоненте 1 вы вызываете changeStatus (и в результате "next" наблюдаемого) не для основного субъекта, а для свойства этого субъекта.

Измените его на this.mliService.changeStatus(this.menuDisableStatus);, и оно должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...