Действие цепочки ngrx после очистки хранилища в метаредукторе - PullRequest
0 голосов
/ 27 ноября 2018

В моем приложении внутри метаредуктора я очищаю хранилище после запуска определенного действия.Это действие - просто переход на главную страницу.Проблема в том, что я не могу сгенерировать новый токен внутри эффекта, связанного с этим действием, потому что он очищается этой функцией:

  return function (state: AppState, action: Action): AppState {
    if (action.type === OfferActionTypes.GoToBaseInfoPage) {
      state = undefined;
    }
    return reducer(state, action);
  };
}

Я пытался связать одно действие после навигации в связанном эффекте, но этоне работает:

  navigateToIndex$ = this.actions$.pipe(
    ofType(fromOfferAction.OfferActionTypes.GoToBaseInfoPage),
    tap (() => this._router.navigate(['', this.currentLang]) ),
    map(() => this._store.dispatch(new AuthenticationCustomTokenRequested()))
   );

Есть ли способ запустить действие для получения нового токена после завершения навигации и очистки?

спасибо

1 Ответ

0 голосов
/ 13 марта 2019

1 - использовать эффект для отправки нового действия (например, NEW_ACTION) после выхода из системы и навигации.

 @Effect()
  logout$ = this.actions.ofType(fromActions.LOGOUT).pipe(
    switchMap(() =>
      fromPromise(this.service.signOut()).pipe(
        map(() => new NewAction()),
        catchError(err =>
          of(new AuthError(err)))
        )
      )
    )
  );

2 - обновить код с

    if (action.type === OfferActionTypes.GoToBaseInfoPage) {

до

    if (action.type === OfferActionTypes.NEW_ACTION) {
...