1

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

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

如您所知,这里stringarrayeach 是在加载相关组件的模块的路由文件中声明的路径。

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

我想要如下代码:

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

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

this.activatedRoute.pathFromRoot;

它返回一个路由数组,而不是字符串。

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

4

2 回答 2

3

您可以使用

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

其中一项来自

path = this.router.config[x].path;

您应该能够通过

this.router.routerState.snapshot.url

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

于 2017-02-23T13:36:18.687 回答
0

从@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);
}
于 2018-04-12T07:47:05.020 回答