#angular #ngrx
#angular #ngrx
Вопрос:
У меня есть эффект, в результате которого я хотел бы выполнить условный вызов данных на основе некоторого значения в хранилище. Что-то вроде этого:
@Effect()
loadRequestEffect$: Observable<Action> = this.actions$.pipe(
ofType<actions.RegisterDataSubscription>,
withLatestFrom(
this.store.select(dataManagementFeature)
),
switchMap(([action, data]) => {
if (...condition...) {
return this.http
.get()
.pipe(
map(data => new actions.SetEndpointData()),
);
}
else {
return of(new actions.SetEndpointLoading());
}
})
Я думал, что мог бы просто выполнить новое действие в switchMap, но, видимо, нет. Он не будет компилироваться с этой жалобой:
ERROR in src/app/store/data-management-store/effects.ts(22,15): error TS2345: Argument of type '([action, data]: [RegisterDataSubscription, State]) => Observable<SetEndpointData> | Observable<SetEndpointLoading>' is not assignable to parameter of type '(value: [RegisterDataSubscription, State], index: number) => ObservableInput<SetEndpointData>'.
Type 'Observable<SetEndpointData> | Observable<SetEndpointLoading>' is not assignable to type 'ObservableInput<SetEndpointData>'.
Есть предложения?
Комментарии:
1. Когда вы говорите, что очевидно, нет , что происходит не так, чего вы ожидаете? И что происходит вместо этого?
2. Обновленный вопрос с ошибкой компиляции.
3. Не могли бы вы, пожалуйста, предоставить скрипку? Это было бы полезно.
4. к вашему сведению, я решил свою проблему, разделив условие на несколько действий. спасибо, что посмотрели.