Я использую 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?
Надеясь быть достаточно ясным:)