У меня есть два связанных действия, которые должны запускаться одно за другим.
Я хотел бы сделать это с @effects
или reducers
в моем компоненте slider.com. Я запускаюпервое родительское действие
valueChange(event: MatSliderChange) {
this.store.dispatch(
new SetSelectDateTime({ dateSelect: this.date, timeSelect: event.source.displayValue })
);
}
затем в редукторе
case ESelectDateTimeActionTypes.SetSelectDateTime: {
return {
...state,
dateTimeSelect: action.payload
};
}
Теперь мне нужно запустить второе действие, чтобы получить новые данные в зависимости от выбранного времени. Итак, я создал эффект updateActualTrips
export class SchedulingsEffects {
constructor(
private actions$: Actions,
private apiCallsService: ApiCallsService
) {}
loadSchedulings$ = createEffect(() =>
this.actions$.pipe(
ofType(ESchedulesActions.GetSchedulesByDate),
mergeMap(() =>
this.apiCallsService.getSchedulings().pipe(
map(trips => ({ type: ESchedulesActions.GetSchedulesByDateSuccess, payload: trips })),
catchError(() => EMPTY)
)
)
)
);
$LoadKpiMission = createEffect(() =>
this.actions$.pipe(
ofType<any>(EKpiActions.GetMissionsByStation),
mergeMap(action =>
this.apiCallsService.getKpiMissionByStation(action.payload, '2016-04-18').pipe(
map(trips => ({ type: EKpiActions.GetMissionsByStationSuccess, payload: trips })),
catchError(() => EMPTY)
)
)
)
);
$updateActualTrips = createEffect(() =>
this.actions$.pipe(
ofType<any>(ESelectDateTimeActionTypes.SetSelectDateTime),
map(action => ({ type: ESchedulesActions.GetNextSchedulesByTime, payload: action.payload }))
)
);
}
Проблема в том, что эффект никогда не срабатывает, но выбранное время обновляется
Обновление Я заметил, что эффект срабатывает в первый раз, когда SetSelectDateTime
получаетинициализирован