使用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罚款。我不确定您代码的其余部分,但希望查看一下会为您提供一些有关代码中可能出问题的想法。

老实说,根据您发布的代码,我看不出为什么它不起作用。该错误可能存在于您的应用或设置中的其他地方。

10-06 04:06