Observable.switchMap不起作用,也没有任何错误

时间:2016-08-05 16:53:50

标签: javascript angular rxjs ngrx

我在使用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;

1 个答案:

答案 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罚款。我不确定你的其余代码的设置,但希望看一下这会给你一些关于你的代码可能出错的一些想法。

基于您发布的代码我老实说不明白为什么它不起作用。该错误可能位于您的应用或设置中的其他位置。