withLatestFrom 实际上是错误的类型

withLatestFrom in effect wrong type

我有以下选择器:

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 应该 return 一个数组(这是编译器在我结束时说的,我的 [action, state] 只是一个 IMission。

我的状态只是一个 var IMission 而不是数组?

您应该使用 this.store 调用 withLatestFrom 以接收整个存储状态,或者使用 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]) => {
    ..
  })
);

希望对您有所帮助。