【发布时间】:2020-11-21 08:15:59
【问题描述】:
有两种创建 ngrx 动作的方法。一种是定义一个实现Action类的新类,另一种是使用“createAction”函数。有没有办法获取使用“createAction”方法创建的动作的类型?
例如,如果我有这个动作:
export const getWorker = createAction(
'[Worker Api] Get Worker',
props<{ workerId: number }>()
);
我想在监听该动作的效果中获取 workerId:
getWorker$ = createEffect(() => {
return this.actions$.pipe(
ofType(WeatherApiActions.getWorker),
switchMap((action: { type: string, workerId: number }) => this.workerService.getWorker(action.workerId)),
map((worker: IWorker) => WeatherApiActions.getWorkerSuccess({ worker }))
)})
和你一样,我不得不自己写类型。这使得效果与动作紧密耦合,这是一个巨大的缺点。所以我的问题是:我是否必须使用第一种创建动作的方法才能获得动作有效负载类型?
【问题讨论】:
标签: angular ngrx ngrx-effects