我在玩角和ngrx/store 17号.

我设置了一些操作,定义了Relative Reducer并分派了操作,但出现了这个错误:

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),没有这种问题.

最新版本有什么变化吗?

EDIT2:

这不是路由,而是当我试图从驻留在另一个模块中的组件内部分派操作时发生的.但这并不能解释为什么如果模块没有绑定到某个路由,模块内部的调度仍然会返回错误.

推荐答案

作为最后的手段,我试图创建一个不包括独立API(--standalone false)的其他项目,这似乎已经解决了问题:现在我可以相对于导入的模块中的存储分派操作.

也许独立API和StoreModule.forFeature不应该一起使用.

Angular相关问答推荐

如何跨不同组件使用ng模板

尾风手风琴中的Ngor

尽管有模拟间谍实现,规范文件仍调用真正的服务

Angular 如何观察DOM元素属性的变化?

类是一个独立的组件,不能在Angular中的`@NgModule.bootstrap`数组中使用

当我更新S显示的数据时,为什么我的垫表用户界面没有更新?

是否可以在Angular(12+)中迭代指定的范围而不是整个数组

合并Cypress和Karma的代码覆盖率报告JSON文件不会产生正确的结果

如何处理后端删除元素后元素列表的刷新

Angular 不使用NgRx的简单CRUD应用程序

Angular 16:信号更新未能更新视图

Angular 2模板驱动表单访问组件中的ngForm

如何以Angular 2 获取当前路由自定义数据?

Angular [disabled]="MyBoolean" 没有工作

如何在angular 5的组件中格式化日期

如何在 Angular 6 中使用 mouseover 和 mouseout

@HostBinding 与 Angular 中的变量类

在Angular2 Dart中设置路由和RouterLink的正确方法是什么

缺少带有Angular的语言环境XXX的语言环境数据

ngIf - 判断后表达式已更改