首页 > 解决方案 > 扩展 @ngrx/router-store routerReducer 以修改添加到 RouterStateUrl 的字段

问题描述

如何使用 Angular 8、ngrx 8 扩展逻辑我使用自定义序列化程序保持路由器状态

export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> 自定义状态在哪里

export interface RouterStateUrl {
url: string;
path?: string[];
params: Params;
queryParams: Params;
breadcrumbs: Breadcrumb[];

} 添加一个新字段 -breadcrumbs

对于整个商店,我有一个这样的减速器映射:

export interface State {
  router: fromRouter.RouterReducerState<any>;
  //... other feature states
}

export const reducers: ActionReducerMap<State> = {
router: fromRouter.routerReducer,
 // ...other feature reducers
};

我想操纵我的路由器状态的自定义部分(面包屑字段)。是否有一种标准方法可以扩展 routerReducer 以允许更改自定义字段?

更新:我看到的一种可能的解决方法是在商店中为面包屑创建一个单独的功能,保持路由器状态功能的纯净。这将需要新功能来减少路由器操作。在我看来,这是一个 hack。路由器状态允许使用额外字段扩展状态似乎不合逻辑,但减速器不允许

标签: angularngrxngrx-storengrx-router-storengrx-store-8.0

解决方案


(目前)不可能向内置路由器减速器添加自定义操作。

根据您的需要,您可以:

  • 正如您所提到的,根据路由器操作创建自己的减速器
  • 根据路由器状态创建选择器以构建面包屑

推荐阅读