我有一个声明如下的路径:
{
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。
所以,我遇到了路由器商店的问题。我已经设置了所有内容并且可以正常工作。
在路由器商店文档之后,我编写了一个自定义序列化程序,它看起来像这样
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循环的每次迭代,检查是否有一个参数并将它们添加到一个对象直到最后一个。好的、好的还是坏的方法?我怎么能做到这一点而不失败?
谢谢。