使用ngrx.store和状态时,我遇到错误(?)。
在我为新状态分配资源之后,reducer返回了新状态,没有任何变化。订阅不会收到任何错误消息。
如果我删除switchMap,该代码将起作用,并且订阅者将获得他应获得的值。
我将代码最小化:
public a$:Observable<any>;
constructor(private _userService:UserService, private _store:Store<any>)
{
this.a$=this._store
.select(state=>state)
.switchMap(state=>
{
return Observable.from(["1"]); //for simplicity.
});
this.a$.subscribe(
something=>{
console.log(something);
},
error=>{
console.log(error);
}
);
}
我的减速器:
export const connectedUserReducer = (state = initialState, action:Action) =>
{
if(action==null || action.type==null)
return state;
switch (action.type) {
case updateConnectedUser:
return Object.assign({},state); <<<-- It comes here and then nothing heppends.<<--
default:
return state;
}
};
我确实将switchMap导入为:“ import'rxjs / add / operator / switchMap';”
最佳答案
SwitchMap是rxjs运算符,因此,如果它是一个bug,则很可能不是ngrx / store的bug。
https://plnkr.co/edit/0Ul8S0VlRwuBUAOuYDKG?p=preview
this.userList = this.userListService.userList.switchMapTo(Observable.from([[new User(1, "Mr. Grant")]]));
我使用的是我已经从另一个示例中设置的旧的插件,但是如果您在组件中查看,我会添加一个switchMapTo(类似于switchMap,但它不会将原始Observable的值传递给该函数)。一切都会切换到新的Observable罚款。我不确定您代码的其余部分,但希望查看一下会为您提供一些有关代码中可能出问题的想法。
老实说,根据您发布的代码,我看不出为什么它不起作用。该错误可能存在于您的应用或设置中的其他地方。