给定URL(例如, /path/path2/path3/123;sdf=df
和路由配置:Angular:通过URL解析所有路由段配置
{ 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);
我可以用段经过配置树,并找出我需要的分支,但它可以例如引起麻烦同时针对create
分段解决:id
。所以,我想使用路由器的解决方法,如果内部路由器实现更改,我不需要更改我的配置。例如:假设我有50%的URL受到某些警卫的保护(例如,只有登录的用户可以去那里),其他50%没有受到保护(为所有人显示)。因此,在导航菜单级别(router-outlet
之外),我只想显示与当前用户相关的链接,因此我需要知道哪些路由受到警卫保护。警卫/数据/无论是这个问题的特殊情况。
请不要拘泥于示例,我正在寻找一种通用的方式来获取特定URL的配置集。
这无论如何可能吗?
这是真的,如果你只是需要获取当前激活的路线的数据,它的工作原理。我的问题是,我只有一个URL,与当前路线无关;我不想激活URL,但我想知道将要发生什么配置,如果我要激活这个URL – smnbbrv
增加了一个例子来解释这个问题 – smnbbrv
您的编辑解决方案正是我想要的避免。我不想单独关心路由权限和链接权限。尽管您重复使用了该功能,但您仍然需要复制权限,因此您需要记住在两处修改它。我想让菜单自动理解哪个链接被禁止。 – smnbbrv