为什么@ngrx/effects触发动作但不改变状态?
Why @ngrx/effects trigger action but doesn't change the state?
我有这个效果:
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.operators,例如:exhaustMap、mergeMap, switchMap 但结果相同.
这个效果的目的是从config.json中获取静态数据并调用 httpClient.get(..) 包含此信息。
我做错了什么?
- 在这里您可以找到 github repository。
- 我也试过将它添加到 StackBlitz 但在那里不起作用。
没有复制品很难说。
确保在 EffectsModule.forRoot([])
或 EffectsModule.forFeature([])
中导入效果 class。
我有 app.module.ts 是父模块,nav.module.ts 是 lazy-loaded模块.
我还有 SharedEffects,我已将它添加到 nav.module.ts 和 forFeature(..)
,但是触发效果的组件是 app.component.ts 所以它必须添加到 app.module.ts 和 forRoot(..)
我有这个效果:
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.operators,例如:exhaustMap、mergeMap, switchMap 但结果相同.
这个效果的目的是从config.json中获取静态数据并调用 httpClient.get(..) 包含此信息。
我做错了什么?
- 在这里您可以找到 github repository。
- 我也试过将它添加到 StackBlitz 但在那里不起作用。
没有复制品很难说。
确保在 EffectsModule.forRoot([])
或 EffectsModule.forFeature([])
中导入效果 class。
我有 app.module.ts 是父模块,nav.module.ts 是 lazy-loaded模块.
我还有 SharedEffects,我已将它添加到 nav.module.ts 和 forFeature(..)
,但是触发效果的组件是 app.component.ts 所以它必须添加到 app.module.ts 和 forRoot(..)