当我在项目中添加“ @ ngrx / router-store”时,它会在开发模式下向应用程序控制台发送垃圾邮件,并通过以下消息对单元测试结果进行垃圾邮件处理:
状态中不存在功能名称“ router”,因此createFeatureSelector无法访问它。确保使用StoreModule.forRoot('router',...)或StoreModule.forFeature('router',...)将其导入已加载的模块中。如果默认状态是不确定的(如路由器状态一样),则可以忽略此仅开发警告消息。
我试图将router
状态属性类型设置为
router: null | RouterReducerState<SerializedRouterStateSnapshot>
和初始状态值
router: null
但与routerReducer
类型冲突,该类型仅接受
RouterReducerState<SerializedRouterStateSnapshot>
如何禁用此警告?老实说,我觉得这很烦人。
答案 0 :(得分:3)
这就是帮助我的:不要使用createFeatureSelector
创建路由器功能选择器,而应使用createSelector
。
export const routerState = createSelector((state: State) => state.router, value => value)
发生此问题的原因是,如果特征值等于createFeatureSelector
,则undefined
logs a warning。上面的代码等效于原始实现,但没有日志。
更新:here's a PR旨在解决该问题。
答案 1 :(得分:-1)
尝试通过简单的功能选择路由器状态片
export const selectRouter = (state: State) => state.router;
因为createFeatureSelector(即名称)用于选择在FEATURE模块中添加的状态切片
StoreModule.forFeature('feature1', reducers)
在这种情况下,您应该使用createFeatureSelector
export const selectFeature1 = createFeatureSelector<State, Feature1State>('feature1');