给定一个 URL,例如/path/path2/path3/123;sdf=df
和一个路由配置:
{ path: 'path', data: { g: 'h' }, children: [
{ path: 'path2', data: { c: 'd' }, children: [
{ path: 'something', component: TestpageComponent, data: { a: 'b' } },
{ path: 'path3/create', component: TestpageComponent, data: { b: 'c' } },
{ path: 'path3/:id', component: TestpageComponent, data: { b: 'c' } },
] }
] },
我需要的是找到所有段的实际配置,以便获得data
所有级别(url 的每个段)上所有参数的结果集。
我可以通过例如拆分段中的 URL
console.log(this.router.parseUrl(url));
或者更准确地说
console.log(this.router.parseUrl(url).root.children['primary'].segments);
这将返回
[{"path":"path","parameters":{}},{"path":"path2","parameters":{}},{"path":"and","parameters":{}},{"path":"123","parameters":{"sdf":"df"}}]
因此,将 URL 拆分为段不是问题。但是我需要为每个段获取配置。
我可以得到所有路线的实际配置
console.log(this.router.config);
我可以通过配置树处理段并找出我需要的分支,但它可能会导致麻烦,例如在解决段:id
时。create
所以,我想使用路由器的方式来解决配置,如果内部路由器实现发生变化,我不需要改变我的。
示例:假设我有 50% 的 URL 由某个守卫保护(例如,只有登录的用户可以去那里),而其他 50% 不受保护(显示给所有人)。因此,在导航菜单级别(在 之外router-outlet
)我只想显示与当前用户相关的链接,所以我需要知道哪些路线受到警卫的保护。警卫/数据/任何东西只是问题的一个特例。
请不要拘泥于示例,我正在寻找一种通用方法来获取特定 URL 的配置集。
这有可能吗?