首页 > 解决方案 > 如何静音“状态中不存在功能名称“路由器”...”ngrx/router-store 警告

问题描述

当我将“@ngrx/router-store”添加到我的项目时,它会在开发模式和单元测试结果中向应用程序控制台发送垃圾邮件,并显示以下消息:

状态中不存在功能名称“路由器”,因此 createFeatureSelector 无法访问它。确保它是使用 StoreModule.forRoot('router', ...) 或 StoreModule.forFeature('router', ...) 导入到加载的模块中的。如果默认状态是未定义的,就像路由器状态一样,则可以忽略此仅用于开发的警告消息。

我试图将router状态属性类型设置为

router: null |  RouterReducerState<SerializedRouterStateSnapshot>

和初始状态值

router: null

但它与routerReducer类型冲突,它只接受

RouterReducerState<SerializedRouterStateSnapshot>

如何禁用此警告?老实说,我觉得这很烦人。

标签: angulartypescriptngrxngrx-router-store

解决方案


这对我有帮助:不要createFeatureSelector用于创建路由器功能选择器,createSelector而是使用。

export const routerState = createSelector((state: State) => state.router, value => value)

出现此问题是因为如果特征值等于 ,则会createFeatureSelector 记录警告undefined。上面的代码等同于原始实现,但没有日志。

更新: 这是一个旨在解决问题的 PR 。


推荐阅读