1

我正在尝试使用ngrx的路由器商店

/模块

@NgModule({
    imports: [
        ....
        StoreModule.forRoot(reducers)
        StoreRouterConnectingModule.forRoot(),
        ...
    ],
    ....
})

/店铺

import { getSelectors, RouterReducerState } from '@ngrx/router-store'

const selectRouter = createFeatureSelector<RouterReducerState>('router');
const { selectQueryParam } = getSelectors(selectRouter);

export const selectedId = selectQueryParam('id'); //error after subscribing

但是当我订阅任何selectRouter选择器时,例如selectQueryParam,我得到错误

Cannot read property 'firstChild' of undefined

因为我的routerState对象没有root属性...

没有根属性的 routerState 对象的屏幕截图

我在谷歌上能找到的最接近的是https://github.com/ngrx/platform/issues/2153

知道如何解决这个问题并使用我的路线选择器吗?

4

2 回答 2

0
TypeError: Cannot read property ‘firstChild’ of undefined

发生这种情况是因为,将一个空的输入对象传递给 serialize(),但它需要一个 RouterStateSnapshot 的实例。

什么是 RouterStateSnapshot?

这是一个相对复杂的类,在我们模拟输入之前需要一些了解。这实际上是测试序列化程序中最复杂的部分。

如何测试 NgRx 路由器状态序列化器

于 2021-08-05T18:51:33.957 回答
0

我猜你缺少RouterState. 这可能会有所帮助

import { RouterState, StoreRouterConnectingModule } from '@ngrx/router-store';

@NgModule({
  imports: [
    ....
    StoreModule.forRoot(reducers)
    StoreRouterConnectingModule.forRoot({ routerState: RouterState.Minimal }),
    ...
  ],
  ....
})
于 2021-08-02T06:06:05.980 回答