如何使用 behaviorsubject Angular 5 更新点击时的对象值?
How to update object value on click using behaviorsubject Angular 5?
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 对象。
在您的 component1 中,您调用 changeStatus(结果是可观察对象的 "next")不是针对主要主题,而是针对该主题的 属性。
将其更改为 this.mliService.changeStatus(this.menuDisableStatus);
应该可以正常工作
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 对象。
在您的 component1 中,您调用 changeStatus(结果是可观察对象的 "next")不是针对主要主题,而是针对该主题的 属性。
将其更改为 this.mliService.changeStatus(this.menuDisableStatus);
应该可以正常工作