Angular2:如何从路由器检索路径数组?

Angular2: how to retrieve path array from Router?

你知道如果你想转到另一个页面可以使用下面的代码吗?

this.router.navigate(['section1', 'section1-children', 'my-page']);

这里大家知道,array中的每一个string都是加载相关组件的模块的路由文件中声明的路径

现在,如果我要在其中使用 navigate 方法的组件与路由路径无关,如何检索与完整当前路径对应的字符串数组?

我想要如下代码:

let path:Array<string> = this.router.getCurrentArray();
path.push('my-page');
this.router.navigate(path);

我曾尝试使用 ActivatedRoute 服务,但我发现唯一有用的方法如下:

this.activatedRoute.pathFromRoot;

returns 一个路由数组,而不是字符串。

你知道达到我的目的的更好方法吗?

您可以使用

this.router.navigate('../' + path);

来自

的条目之一
path = this.router.config[x].path;

您应该可以通过

获得完整路径
this.router.routerState.snapshot.url

这仅适用于 Router 注入到路由器为此路由添加的组件中的实例。

总结自@Günter Zöchbauer 评论:

constructor(private router: Router) {
    let tree: UrlTree = this.router.parseUrl(this.router.routerState.snapshot.url);
    let g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];
    let s: UrlSegment[] = g.segments;
    return s.map(a => a.path);
}