У меня есть путь, объявленный как:
{
path: 'app/:userId',
children: [...AppChildrenRoutes]
}
А потом, внутри AppChildrenRoutes
{ path: 'feature', component: MainFeatureComponent }
Итак, в какой-то момент моего приложения я могу получить localhost:4200/app/123/feature
.
Внутри этого компонента с помощью некоторых действий я могу перейти к другому маршруту, например так:
this.router.navigate([
'app',
this.userId,
'feature',
{ search: this.searchFor }
]);
Рассматривайте это как крупное корпоративное приложение, которое меняет архитектуру, чтобы использовать NgRx, шаг за шагом.
Итак, я столкнулся с проблемой в Router Store. Я все настроил и все работает.
После Маршрутизатора Store Документы Я написал Custom Serializer, и он выглядит так
serialize(routerState: RouterStateSnapshot): RouterStateUrl {
const { url } = routerState;
const queryParams = routerState.root.queryParams;
while (route.firstChild) {
route = route.firstChild;
}
const params = route.params;
return { url, queryParams, params };
}
И я узнал, что, учитывая URI, такой как
localhost:4200/app/123/feature;search=blue
route.params
возвращает только параметр search
, а не userId
и search
.
Я могу реализовать CustomSerializer
, который возвращает все params
с пути? (в этом случае оба userId
и search
).
Я пытался, но безуспешно, на каждой итерации цикла while проверять наличие параметров и добавлять их к объекту до последнего. Хорошо, хорошо или плохо? Как я мог работать это и не подвести?
Спасибо.