【发布时间】:2017-08-25 21:34:35
【问题描述】:
给定一个 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' } },
] }
] },
我需要找到所有段的实际配置,以便获得所有级别(url 的每个段)上所有data 参数的结果集。
我可以通过例如将 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。所以,我想使用 router's 的方式来解决配置,如果内部路由器实现发生更改,我不需要更改我的配置。
示例:假设我有 50% 的 URL 受到一些保护(例如,只有登录的用户可以访问)而其他 50% 没有受到保护(显示给所有人)。因此,在导航菜单级别(router-outlet 之外)我只想显示与当前用户相关的链接,因此我需要知道哪些路线受到警卫的保护。 Guards/data/whatever 只是问题的一个特例。
请不要拘泥于示例,我正在寻找一种通用方法来获取特定 URL 的配置集。
这有可能吗?
【问题讨论】:
-
smnbbrv 您的帖子中有什么 url 变量?你在哪里定义的?请回复。
标签: angular typescript angular2-router