Angular 最迟不回来

Angular 最迟不回来,angular,redux,rxjs,ngrx,Angular,Redux,Rxjs,Ngrx,我有以下效果 @Effect() createMission$ = this.actions$.pipe( ofType<featureActions.CreateMissionRequest>(featureActions.ActionTypes.CreateMissionRequest), withLatestFrom(this.store$), map(([action, state]) => { return this.dat

我有以下效果

  @Effect()
  createMission$ = this.actions$.pipe(
    ofType<featureActions.CreateMissionRequest>(featureActions.ActionTypes.CreateMissionRequest),
    withLatestFrom(this.store$),
    map(([action, state]) => {
      return this.dataService.createMission(state.missions.entities[action.payload.routeId])).pipe(
        map(response => new featureActions.CreateMissionSuccess({response, mission: state.missions.entities[action.payload.routeId]})),
        catchError((error: HttpErrorResponse) => {
          return of(new featureActions.CreateMissionFailed({error}));
        }),
      );
    }),
  );
我面临的问题是,如果我执行后面的实现,我将不会有两个可观察的一个用于行动,一个用于任务,而只有一个


我不知道如何更改才能使其工作

现在您已将任务选择逻辑移动到选择器,您似乎不需要@Effect中的操作

类似的东西应该/可能在下面未经测试的代码中工作

e、 g


你有一个可以分享的最简单的例子吗?另外,您为什么需要为后一种实现采取行动。你能用任务对象来调用你的数据服务吗?但是_任务在地图上是可见的。你试过了吗?我没有更改您的代码流,因为您只是询问在map函数中没有actioninput。我只是告诉你如何删除。是的,我尝试过,但我以类似的方式修复了它。你展示的方法返回一个来自withlatest的可观测值,并且不是我想要的类型,也许如果你能提供一个工作小提琴或stackblitz,我可以更有效地帮助你。你可能会,但没关系,不用担心,谢谢^^
export const featureAdapter: EntityAdapter<IMissionRoute> = createEntityAdapter<IMissionRoute>({
  selectId: model => model.routeId,
});
export const selectAllEntities: (state: object) => Dictionary<IMissionRoute> = featureAdapter.getSelectors(selectMissionState).selectEntities;


export const getById = () => createSelector(
  selectAllEntities,
  (entities, props) => entities[props.id]
);
    withLatestFrom((action) => this.store$.pipe(select(MissionsStoreSelectors.getById(), {id : action.payload.routeId}))),
    map(([action, mission]) => {
          /// 
     }
 @Effect()
  createMission$ = this.actions$.pipe(
    ofType<featureActions.CreateMissionRequest>(featureActions.ActionTypes.CreateMissionRequest),
    withLatestFrom((action) => this.store$.pipe(select(MissionsStoreSelectors.getById(), {id : action.payload.routeId}))),
    map(_mission => {
      return this.dataService.createMission(_mission).pipe(
        map(response => new featureActions.CreateMissionSuccess({response, mission: _mission})),
        catchError((error: HttpErrorResponse) => {
          return of(new featureActions.CreateMissionFailed({error}));
        }),
      );
    }),
  );