在我的应用程序中,我想加载上下文相关的帮助文本,因此文本基于应用程序的当前位置。 但是,当访问者位于具有id参数的位置时,不应加载每个id的单独帮助文本,而只应加载常规版本。我认为未经解开的路径最适合此目的。
一些代码作为澄清:
目前路线: / page / 1解析为PageComponent:
{path: '/page/:pageid', component: PageComponent}
我想显示此PageComponent的帮助文本。因此,对于检索帮助文本,我希望将未解析的路径(/ page /:pageid)作为变量。
我现在正在使用RC4,但欢迎所有解决方案。
修改:通常下面的代码似乎可以正常工作
constructor(public route: ActivatedRoute) {}
ngOnInit(): void {
setTimeout(() => {
console.log(this.route.snapshot._routeConfig.path);
});
}
但是,实际上给定的路线是子路线:
{
path: 'app',
component: Core,
children: [
{path: 'page/:pageid', component: PageComponent}
]
}
在控制台中导致“app”。
编辑2 :关闭,但尚未退出...
ngOnInit(): void {
setTimeout(() => {
let state = this.router.routerState;
console.log(state.firstChild(state.firstChild(state.root)).toString());
});
}
结果:
Route(url:'page/1', path:'page/:pageid')
答案 0 :(得分:0)
也许你可以这样做:
答案 1 :(得分:0)
在对核心js文件进行了一些挖掘之后,我得出了以下解决方案:
ngOnInit(): void {
setTimeout(() => {
const state = this.router.routerState;
this.url = state.firstChild(state.firstChild(state.root)).snapshot._routeConfig.path;
});
}
挖掘到@ angular / router / src / router_state.js:
RouterState.prototype.toString = function () { return this.snapshot.toString(); };
...
ActivatedRouteSnapshot.prototype.toString = function () {
var url = this.url.map(function (s) { return s.toString(); }).join('/');
var matched = this._routeConfig ? this._routeConfig.path : '';
return "Route(url:'" + url + "', path:'" + matched + "')";
};
这为前面提到的解决方案提供了足够的信息。