У меня есть следующий эффект
@Effect()
assignMission$ = this.actions$.pipe(
ofType<featureActions.AssignUAVMissionRequest>(featureActions.ActionTypes.AssignUAVMissionRequest),
concatMap(action =>
of(action).pipe(
withLatestFrom(this.store$.pipe(select(RoutesStoreSelectors.getById(), {routeId: action.payload.routeId}))),
)
),
switchMap(([action, route]) => {
return this.dataService.assignUAVMission(action.payload.params).pipe(
mergeMap(response => {
if (route.saveState === RoutesStoreModels.IRouteSaveState.DRAWED) {
return [
new RoutesStoreActions.OverrideRoute(),
new featureActions.AssignUAVMissionSuccess()
];
} else {
const newRouteId = uuid();
return [
new RoutesStoreActions.AddRoute(),
new featureActions.AssignUAVMissionSuccess()
];
}
}),
catchError((error: HttpErrorResponse) => {
return of(new featureActions.AssignUAVMissionFailed({error}));
}),
);
})
);
в одном случае, я хочу отправить OverrideRoute
и AssignUAVMissionSuccess
в другом случае, я хочу вместо этого отправить AddRoute
и AssignUAVMissionSuccess
.
проблема в том, что мой mergeMap возвращает ошибку
ОШИБКА в src / app / stores / uavs-store / effect.ts (218,18): ошибка TS2345: Аргумент типа '(ответ: AssignMissionResponse) => (AssignUAVMissionSuccess | OverrideRoute) [] |(AssignUAVMissionSuccess | AddRoute) [] 'нельзя назначить параметру типа' (значение: AssignMissionResponse, index: number) => ObservableInput '.
Но я не совсем понимаю, как это можно исправить?
Можно ли иметь эффект, отправляющий другой набор действий?