Angular 因果报应错误:无法设置属性';预激活前';未定义的

Angular 因果报应错误:无法设置属性';预激活前';未定义的,angular,unit-testing,karma-jasmine,ngrx,ngrx-router-store,Angular,Unit Testing,Karma Jasmine,Ngrx,Ngrx Router Store,我正在尝试测试Angular 5应用程序中的一个组件,该应用程序使用@ngrx/路由器存储,我遇到了状态在此选择器中未定义的问题: import * as fromRouter from '@ngrx/router-store'; export const selectRouter = (state: AppState) => state.router; export const selectUrl = createSelector( selectRouter, (state:

我正在尝试测试Angular 5应用程序中的一个组件,该应用程序使用
@ngrx/路由器存储
,我遇到了
状态
在此选择器中未定义的问题:

import * as fromRouter from '@ngrx/router-store';

export const selectRouter = (state: AppState) => state.router;

export const selectUrl = createSelector(
  selectRouter,
  (state: fromRouter.RouterReducerState<RouterStateUrl>) => state.state && state.state.url // <--- state here is undefined
);
从'@ngrx/router store'以路由器的形式导入*;
export const selectRouter=(状态:AppState)=>state.router;
export const selectUrl=createSelector(
选择路由器,

(state:fromRouter.RouterReducerState)=>state.state&&state.state.url/要连接
路由器
,您需要通过
forRoot
而不是
forChild
导入路由器

实际上,您必须导入
StoreRouterConnectingModule.forRoot
,才能使用NgRx的路由器缩减器

尝试使用:

imports: [
  RouterModule.forRoot(wizardRoutes),
  StoreModule.forRoot(reducers, {metaReducers}),
  EffectsModule.forRoot([MyEffects, WizardEffects]),
  HttpClientModule,
  StoreRouterConnectingModule.forRoot()
]
imports: [
  RouterModule.forRoot(wizardRoutes),
  StoreModule.forRoot(reducers, {metaReducers}),
  EffectsModule.forRoot([MyEffects, WizardEffects]),
  HttpClientModule,
  StoreRouterConnectingModule.forRoot()
]