我正在尝试将ngrx路由器存储添加到我的应用程序并遇到问题。看一下github上提供的示例应用程序,看起来我只需要将routerReducer属性添加到我的应用程序状态,然后从ngrx router-store注册routerReducer。当我这样做时,应用程序立即进入无限循环尝试路由到第一页。这是正常工作,直到我添加路由器存储。实际上我可以导入我需要的所有东西,这很好。问题是routerReducer。一旦我注册,那么问题就开始了。这是我的州定义。我无法弄清楚造成这种情况的原因。
export interface App {
config: AppConfig;
}
export interface RouterStateUrl {
url: string;
queryParams: Params;
}
export interface ApplicationState {
app: App;
routerReducer: fromRouter.RouterReducerState<RouterStateUrl>;
}
export const INITIAL_APP_STATE: App = {
config: {
Culture: '',
Dictionary: {},
Token: '',
UserId: ''
}
};
这是app.module中的一行。如果我删除routerReducer,那么一切正常。
StoreModule.forRoot({app: applicationReducer, routerReducer: routerReducer}, {metaReducers})
使用storeFreeze关于_resolveData不可序列化时出现错误。从我可以看出,通过注册自定义RouterStateSerializer解决了该问题。我已经做到了,但它没有被击中。我不知道上面的问题是否相关,但我想我会提到它。这就是我如何定义:
{provide: RouterStateSerializer, useClass: CustomRouterStateSerializer}
和班级:
export interface RouterStateUrl {
url: string;
queryParams: Params;
}
export class CustomRouterStateSerializer
implements RouterStateSerializer<RouterStateUrl> {
serialize(routerState: RouterStateSnapshot): RouterStateUrl {
const { url } = routerState;
const queryParams = routerState.root.queryParams;
return { url, queryParams };
}
}
答案 0 :(得分:0)
问题是我的自定义序列化程序。我犯了一个骨头错误,它被默认的覆盖了。