@ngrx/store 操作在调度时未定义

问题描述 投票:0回答:1

我正在玩 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:

这不是路线,当我尝试从驻留在其他模块中的组件内部分派操作时,就会发生这种情况。但这并不能解释为什么如果模块未绑定到路由,模块内部的调度仍然返回错误。

angular ngrx ngrx-store
1个回答
0
投票

可能是因为在调度它时没有调用创建者的方法?

我希望看到(如果情况并非如此,请随时更新问题):

this.store.dispatch(setTitle)

这应该变成:

this.store.dispatch({title: ''})

如果不是这种情况,复制品将会很有用。 另一件可能的原因是

SharedActions
是如何导入的。

© www.soinside.com 2019 - 2024. All rights reserved.