角度,订阅主题的组件将不会收到事件

时间:2018-11-16 22:32:53

标签: angular

我有一项服务,负责创建主题行为并监听更新。还有一个组件将触发行为主体的事件,最后一个组件订阅该事件并将其值推送到数组。到目前为止,我的执行情况尚未达到。

这是我的服务

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

我面临的问题是在我的最后一个组件中未触发订阅者。我究竟做错了什么? 预先感谢

1 个答案:

答案 0 :(得分:1)

您是在行为主题this._menuSubject.next(item);上触发事件,但是在主题的旧可观察副本上收听事件。

尝试将_menuSubject设为公开(或以公开方式将其返回)并直接订阅。您可能要跳过第一项,因为第一项将是当前值。