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);
}
Другие вопросы по тегам