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

时间:2017-02-23 13:28:21

标签: angular routing angular2-routing angular2-router3 navigatetourl

您知道如果要转到其他页面,可以使用以下代码吗?

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

如您所知,string中的每个array都是在加载相关组件的模块的路由文件中声明的路径。

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

我想拥有以下代码:

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

我尝试使用ActivatedRoute服务,但我找到的唯一有用的方法如下:

this.activatedRoute.pathFromRoot;

返回Route数组,而不是字符串。

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

2 个答案:

答案 0 :(得分:2)

您可以使用

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

使用

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

你应该能够通过

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

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

答案 1 :(得分:0)

摘自@GünterZö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);
}