withLatestFrom实际上是错误的类型

时间:2019-06-28 11:25:06

标签: angular rxjs ngrx ngrx-effects

我有以下选择器:

export const selectMissionState: MemoizedSelector<object, State> = createFeatureSelector<State>('missions');

export const selectAll: (state: object) => Array<IMission> = featureAdapter.getSelectors(selectMissionState).selectAll;

就我而言,我执行以下=>

  @Effect()
  applyMissionReroute$ = this.actions$.pipe(
    ofType<featureActions.ApplyMissionReroute>(featureActions.ActionTypes.ApplyMissionReroute),
    withLatestFrom(MissionsStoreSelectors.selectAll()),
    switchMap(([action, state]) => {})
  );

但是我面临一个问题,尽管我的selectAll应该返回一个Array(这是编译器在结束时说的内容,但我的[action,state]只是一个IMission。

我的状态是什么,只是一个IMission,而不是数组?

1 个答案:

答案 0 :(得分:1)

您应该使用withLatestFrom调用this.store来接收整个商店状态,或者只用this.store.pipe(select(...selector...))来调用状态的一部分。

通过以下更改,您将在selectAll参数内收到选择器的结果。

@Effect()
applyMissionReroute$ = this.actions$.pipe(
  ofType<featureActions.ApplyMissionReroute
    (featureActions.ActionTypes.ApplyMissionReroute),
  withLatestFrom(this.store.pipe(select(MissionsStoreSelectors.selectAll))),
  switchMap(([action, selectAll]) => {
    ..
  })
);

希望它会对您有所帮助。