我在使用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导入为:&#34; import&#39; rxjs / add / operator / switchMap&#39;;&#34;
答案 0 :(得分:1)
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")]]));
我正在使用我已经从另一个示例设置的旧plunker但是如果你查看组件我添加了一个switchMapTo(类似于switchMap但它只是没有将原始Observable的值传递给函数)。一切都切换到新的Observable罚款。我不确定你的其余代码的设置,但希望看一下这会给你一些关于你的代码可能出错的一些想法。
基于您发布的代码我老实说不明白为什么它不起作用。该错误可能位于您的应用或设置中的其他位置。