如何使用BehaviorSubject Anguler 5更新点击对象值?

时间:2018-10-16 06:05:31

标签: javascript angular5

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

现在在我的components1.ts示例中

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

现在在我的components2.ts示例中

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

在这里控制台给我“ true”,而不是Update对象。

1 个答案:

答案 0 :(得分:1)

在component1中,您将changeStatus(以及可观察到的“下一个”)称为主要主题,而不是主要主题的属性。

将其更改为this.mliService.changeStatus(this.menuDisableStatus);,它应该可以工作