ngrx: эффект для действия по инициализации хранилища

#angular #ngrx #ngrx-store #ngrx-effects

#angular #ngrx #ngrx-хранилище #ngrx-эффекты

Вопрос:

Я хочу отправить действие, когда ngrx сохранит inits ( @ngrx/store/init ). Я создал эффект для этого:

     @Effect()
  reloadConext$ = this.actions$.pipe(
    ofType(INIT),
    switchMap(() => {
      console.log('INIT ACTION');
        //dispatch my action here
        return of([]);
    }
  

Эффект не запускается при отправке действия инициализации хранилища. У меня есть модули эффектов для root, зарегистрированные в app.module :

 EffectsModule.forRoot([AppEffects]),
  

Если я удалю ofType фильтр действий, событие будет запущено. Кто-нибудь знает, что фильтр для действия инициализации не работает?

Заранее спасибо.

Ответ №1:

Я думаю, вы ищете метод жизненного цикла ROOT_EFFECTS_INIT или onInitEffects для некорневых эффектов.

ROOT_EFFECTS_INIT из документов:

 @Effect()
init$ = this.actions$.pipe(
  ofType(ROOT_EFFECTS_INIT),
  map(action => ...)
);
  

Oniniteэффекты из документов:

 class UserEffects implements OnInitEffects {
  ngrxOnInitEffects(): Action {
    return { type: '[UserEffects]: Init' };
  }
}
  

Комментарии:

1. если кто-то приходит к этому и по какой-то причине нуждается @ngrx/store/init вместо этого, вы можете получить это из import { INIT } from '@ngrx/store';