Я следую примеру кэширования из docs . Мое действие сначала ищет существующее хранилище, а затем извлекает вызов http
. ofActionSuccesful
успешно срабатывает, когда я вызываю http, но не срабатывает, когда я возвращаюсь из магазина. Вот мой магазин код
@Action(Get)
get(ctx: StateContext<SubmissionStateModel>, action: Get) {
const id = action.payload;
const submissions = ctx.getState().submissions;
const index = submissions.findIndex(submission => parseInt(submission.id, 10) === parseInt(id, 10));
return index > -1
? ctx.dispatch(new GetSuccess(submissions[index]))
: this._submissionService.get(id).pipe(
map(response => {
ctx.patchState({ submissions: [response, ...submissions] });
return ctx.dispatch(new GetSuccess(response));
}),
);
}
и из моего компонента
this._actions
.pipe(
ofActionSuccessful(SubmissionActions.GetSuccess),
takeUntil(this._onDestroy$),
)
.subscribe(action => {
this._store.dispatch(new SubmissionActions.SetActive(action.payload.id));
this.submissionEditForm.patchValue(action.payload);
});