【问题标题】:Observable.switchMap doesn't work and doesn't have any errorsObservable.switchMap 不起作用并且没有任何错误
【发布时间】:2016-08-05 16:53:50
【问题描述】:

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

在我发送新状态并且减速器返回新状态后 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';”

【问题讨论】:

    标签: javascript angular rxjs ngrx


    【解决方案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 罚款。我不确定你代码的其余部分的设置,但希望仔细研究一下这会让你对代码中可能存在的问题有所了解。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多