我正在玩 Angular 和 ngrx/store 17。
我设置了一些操作,定义了相关减速器并调度了操作,但出现了此错误:
TypeError: can't access property "type", creator is undefined
当函数尝试提取操作的类型时,它会发生在函数内部
on()
,原因似乎是操作未定义。
我已经数不清做过多少次这样的事情了,但这样的事情从来没有发生在我身上。
这就是我行动的定义
export const setTitle = createAction(`Set title`, props<{ title: string }>());
减速机
export const sharedFeature = createFeature({
name: sharedFeatureKey,
reducer: createReducer(
initialState,
on(SharedActions.setTitle, (state, { title }) => ({ ...state, title })),
),
});
以及模块中的注册:
StoreModule.forFeature(fromShared.sharedFeature),
我真的不明白我做错了什么,我在互联网上找不到任何信息。
编辑:
经过一些实验,我发现原因似乎与模块没有绑定任何路由有关。
在 app.module 中定义模块的路由解决了问题,但我之前已经做过类似的事情(在 Angular 8 中)并且没有遇到此类问题。
最新版本有什么变化吗?
编辑2:
这不是路线,当我尝试从驻留在其他模块中的组件内部分派操作时,就会发生这种情况。但这并不能解释为什么如果模块未绑定到路由,模块内部的调度仍然返回错误。
可能是因为在调度它时没有调用创建者的方法?
我希望看到(如果情况并非如此,请随时更新问题):
this.store.dispatch(setTitle)
这应该变成:
this.store.dispatch({title: ''})
如果不是这种情况,复制品将会很有用。 另一件可能的原因是
SharedActions
是如何导入的。