Как условно выполнить http-запрос в эффекте ngrx

#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. к вашему сведению, я решил свою проблему, разделив условие на несколько действий. спасибо, что посмотрели.