我订阅了组件构造函数中的store属性
constructor(private someService: SomeService){
someService.someObservable.subscribe((data: Some)=> {
this.some = data;
console.log('changed');
});
}
在服务中,构造函数如下所示:
constructor(private store: Store<any>){
this.someObservable = <Observable<{}>>store.select('some');
}
我一直在改变这个对象的状态,但是日志只出现一次。
我还很奇怪的是,我直接在我的模板中访问this.some
属性(没有async
管道),并且它完全更新!
似乎this.some
属性正在更新,但订阅中的next()
无效。
帮助任何人?谢谢!
答案 0 :(得分:3)
在我非常相似的情况下,问题是其中一个订阅处理程序抛出错误。遇到错误时,可观察流停止发出新值。
答案 1 :(得分:1)
您不应该在构造函数中调用服务,并且将其视为不良做法。使用ngOnInit()方法订阅服务。在加载组件时将自动调用此方法。
尝试这样,这可能会解决您的问题。
this._scope.appRoot.pushPage(pageName, params);
答案 2 :(得分:0)
如果您更新属性并返回相同的对象而不会触发存储更新事件,请确保从reducer返回新对象
switch(action.type){
case MAIN_MENU_TOGGLE : {
Ex返回Object.assign({},appSettings,{isMainMenuExpand:flag}) }
答案 3 :(得分:0)
我有同样的问题,我发现原因是你编辑了状态,没有为状态创建新对象,例如:
执行:Object.assign({},state,{smt:changed})}
而不是:Object.assign(state,{smt:changed})}