Расширьте @ ngrx / router-store routerReducer, чтобы изменить поля, добавленные в RouterStateUrl - PullRequest
0 голосов
/ 26 октября 2019

Как расширить логику С 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, позволяющий изменить настраиваемое поле?

ОБНОВЛЕНИЕ: Один из возможных обходных путей, который я вижу, - это создать отдельную функцию в хранилище для хлебных крошек, сохраняя чистоту функции состояния маршрутизатора,Это потребовало бы новой функции, чтобы уменьшить действия маршрутизатора. На мой взгляд, это взломать хотя. Кажется нелогичным, что состояние маршрутизатора позволяет расширять состояние с помощью дополнительных полей, но не редуктора

1 Ответ

0 голосов
/ 26 октября 2019

Невозможно (на данный момент) добавить настраиваемые действия во встроенный маршрутизатор-редуктор.

В зависимости от того, что вам нужно, вы можете:

  • создатьваш собственный редуктор, основанный на действиях маршрутизатора, как вы упомянули
  • , создайте селектор на основе состояния маршрутизатора для создания «хлебных пальцев»
...