Observable.switchMap 不工作并且没有任何错误
Observable.switchMap doesn't work and doesn't have any errors
我在使用 ngrx.store 和状态时遇到错误(?)。
在我发送新状态和减速器后 returns 新状态 nothing heppends 。订阅不会收到任何错误信息。 如果我删除 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 运算符,因此如果它是一个错误,很可能不是 ngrx/store 个错误。
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 罚款。我不确定您的代码的其余设置,但希望通过查看它可以让您了解代码中可能存在的问题。
根据您发布的代码,老实说,我不明白为什么它不起作用。该错误可能存在于您的应用或设置中的其他地方。