如何使“状态中不存在功能名称“路由器”...” ngrx/router-store 警告

Kla*_*r_1 3 typescript ngrx angular ngrx-router-store

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

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

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

router: null |  RouterReducerState<SerializedRouterStateSnapshot>
Run Code Online (Sandbox Code Playgroud)

和初始状态值

router: null
Run Code Online (Sandbox Code Playgroud)

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

RouterReducerState<SerializedRouterStateSnapshot>
Run Code Online (Sandbox Code Playgroud)

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

Kla*_*r_1 6

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

export const routerState = createSelector((state: State) => state.router, value => value)
Run Code Online (Sandbox Code Playgroud)

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

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