Как использовать DataPersistence, чтобы использовать 2 состояния одновременно - PullRequest
0 голосов
/ 25 июня 2019

Я использую Nx для создания нового приложения, используя NgRx и DataPersistence.

Я сгенерировал несколько состояний в своем приложении (пример: Состояние A, Состояние B).

Чтобы получить данные через запрос API для заполнения состояния A, я использую эффект, связанный с this.dataPersistence.fetch.

Однако для запуска моего запроса API мне нужны данные, содержащиеся в состоянии B. Здесь я блокирую.

Я видел, что используя базовые эффекты, мы можем использовать оператор withLastestFrom для получения состояния, отличного от того, которое используется в настоящее время.

@Injectable()
export class ElementEffects {
constructor (private store: Store<any>, private apiService: ApiService) {}

      @Effect()
      public yourEffect: Observable<Action> = this.actions$.pipe(
        ofType<yourActionClass>(ActionsEnum.YOUR_ACTION),
        withLatestFrom(this.store.pipe(select(selectSomethingFromTheStore))),
        concatMap(([action, selectedDateFromTheStore]) => this.apiService.doBackendCall(selectedDateFromTheStore, action.payload).pipe(
          map(([resultFromTheBackendCall, selectedDateFromTheStore]) => {
            // Do Stuff
          },
          catchError((error) => of(new FailureAction(error)))
          )
        ),
      );
}

Однако я не знаю, как справиться с этим с помощью this.dataPersistence.fetch.

Открыв код DataPersistent (https://github.com/nrwl/nx/blob/master/packages/angular/src/runtime/nx/data-persistence.ts),, я вижу, что функция fetch уже использует оператор withLatestFrom. Я не вижу, как восстановить другое состояние.

  fetch<A extends Action = Action>(
    actionType: string,
    opts: FetchOpts<T, A>
  ): Observable<any> {
    return this.actions.pipe(
      ofType<A>(actionType),
      withLatestFrom(this.store),
      fetch(opts)
    );
  }

Поэтому мой вопрос: Как восстановить состояние B при использовании эффекта состояния A?

Надеясь быть достаточно ясным:)

...