Я хочу использовать ngrx / efffects и ngrx / store в моем приложении angular (v7). В моем приложении все настроено, как указано в документации ngrx. При отправке действия в AppComponent редуктор работает должным образом, но похоже, что эффекты не прослушивают никаких действий.
Тестирование:
Проверьте консоль, выполнив ng serve -o
. Все регистрируется, как и ожидалось, кроме того, что находится в эффектах.
Подскажите, пожалуйста, в чем я ошибся.
Эффекты
@Injectable()
export class AppEffects {
constructor(
private actions$: Actions,
private myService: MyserviceService
) {}
myAction$ = this.actions$.pipe(
ofType<fromActions.GetItems>(MyActionTypes.GET_ITEMS),
switchMap(action => {
console.log('i am in effects', action);
return this.myService.getItems().pipe(
map(data => new fromActions.GetItemsSuccess(data)),
catchError(err => of(new fromActions.GetItemsSuccess(err)))
);
})
);
}
Настроенные эффекты в AppModule
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
StoreModule.forRoot(reducers, { metaReducers }),
EffectsModule.forRoot([AppEffects])
],
})
Действие диспетчеризации в AppComponent
export class AppComponent implements OnInit {
constructor(private store: Store<State>) {
console.log('in component');
}
ngOnInit() {
console.log('dispatched action in AppComponent');
this.store.dispatch(new fromAction.GetItems());
}
}