我有一项服务,负责创建主题行为并监听更新。还有一个组件将触发行为主体的事件,最后一个组件订阅该事件并将其值推送到数组。到目前为止,我的执行情况尚未达到。
这是我的服务
private _menuSubject = new BehaviorSubject<MenuList>({
menu_item_id:null,
menu_item_category:null,
menu_item_description:null,
menu_item_name:null,
menu_item_price:null
});
menuListObs$: Observable<MenuList> = this._menuSubject.asObservable();
updateMenuArray(item:MenuList):void {
this._menuSubject.next(item);
}
getUpdatedMenuArray():Observable<MenuList>{
return this.menuListObs$;
}
发送消息的组件
onSubmit(menu){
this.menu.updateMenuArray(menu);
}
以及订阅该服务以进行更新的组件
ngOnInit() {
this.menu.getUpdatedMenuArray().subscribe((item)=>{
this.menuList.push(item)
});
}
我面临的问题是在我的最后一个组件中未触发订阅者。我究竟做错了什么? 预先感谢
答案 0 :(得分:1)
您是在行为主题this._menuSubject.next(item);
上触发事件,但是在主题的旧可观察副本上收听事件。
尝试将_menuSubject
设为公开(或以公开方式将其返回)并直接订阅。您可能要跳过第一项,因为第一项将是当前值。