У меня есть этот эффект:
loadIpInfo$ = createEffect(() => {
return this.actions$.pipe(
ofType(loadIpInfo),
concatMap((action: {ipInfoConfig: IpInfoConfig}) => {
return this.ipService.getIpDetails(action.ipInfoConfig).pipe(
map((ipInfoResponse) => {
this.store.dispatch(setErrorMessage({ message: '' }));
return loadIpInfoSuccess({ ipInfoResponse });
}),
catchError(() => {
return of(setErrorMessage({ message: 'Unknown error occurred. Please try again' }));
})
)
})
)
})
Он запускает действие: loadIpInfo, но не меняет состояние.
Используя точки останова, я увидел, что он не входит в concatMap.
Я пробовал с разными rxjs.операторы, такими как: выхлопКарта, карта слияния, переключательКарта, но с тем же результатом.
Цель этого эффекта — получить статические данные от config.json и вызвать httpClient.получить(..) с этой информацией.
Что я делаю не так?
Трудно сказать, не имея репродукции.
Обязательно импортируйте класс эффектов в EffectsModule.forRoot([])
или EffectsModule.forFeature([])
.
Я считаю, что действие отправляется до того, как будет зарегистрирован лениво загруженный модуль.
У меня есть app.module.ts, который является родительским модулем, и nav.module.ts, который является модулем ленивая загрузка.
У меня также есть Общие эффекты, я добавил его к nav.module.ts с помощью forFeature(..)
, но компонент, вызвавший эффект, был app.component.ts, поэтому его пришлось добавить к app.module.ts с помощью forRoot(..)
Привет, @timdeschryver, в родительском модуле, который загружен лениво, у меня уже есть
EffectsModule.forFeature([SharedEffects])
, также я только что отредактировал сообщение с адрес гитхаба.