0

使用 ngrx.store 和 states 时,我遇到了一个错误(?)。

在我发送新状态并且减速器返回新状态之后,什么都没有发生。订阅不会收到任何错误消息。 如果我删除 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';”

4

1 回答 1

1

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 罚款。我不确定您的代码的其余设置,但希望查看此内容可以让您了解代码中可能存在的问题。

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

于 2016-08-06T05:21:28.220 回答