Angular2: как получить массив путей из маршрутизатора?
Знаете ли вы, что если вы хотите перейти на другую страницу, вы можете использовать следующий код?
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 ответа
Ты можешь использовать
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);
}