Как я могу получить список всех маршрутов (строк, переданных в пути) с маршрутизатора в Angular 2? [Дубликат]

Реализация Patirk не работает для MS Office 2016 на Mac. Я воспользовался реализацией Тима Холла. Вот ссылка: https://github.com/VBA-tools/VBA-Dictionary

Также импорт файлов cls в Excel не работает в MS Office 2016 on Mac по состоянию на сентябрь 2017 года. Поэтому мне пришлось создать модуль класса и скопировать и вставить содержимое Dictionary.cls вручную в этом модуле, удалив метаинформацию из Dictionary.cls, например VERSION 1.0 CLASS, BEGIN, END , Attribute.

24
задан Mike Sav 1 June 2016 в 13:20
поделиться

6 ответов

Вот лучшая версия, в которой будут перечислены все возможные маршруты :

  import { Router, Route } from "@angular/router";
  constructor(private router: Router) {

  }
  ngOnInit() {
    this.printpath('', this.router.config);
  }
  printpath(parent: String, config: Route[]) {
    for (let i = 0; i < config.length; i++) {
      let r = config[i];
      console.log(parent + '/' + r.path);
      if (r.children && r.path) {
        this.printpath(parent + '/' + r.path, r.children);
      }
    }
  }
7
ответ дан Anand Rockzz 24 August 2018 в 23:51
поделиться

У вас возникают проблемы с использованием этого решения, если у вас есть Lazy-маршруты. Я сделал простую команду bash, чтобы показать информацию о маршрутизации:

cd /path/to/app 
for r in $(find src -name "*.routes.ts"); do 
  echo $r; grep "path:\|component:\|loadChildren:" $r; 
done
0
ответ дан jbastias 24 August 2018 в 23:51
поделиться

Если вам нужны только пути маршрута в виде строк, вы можете найти их, итерации по вашему Router объекту Router объекта.

    for (var i = 0; i < this.router.config.length; i++) {
        var routePath:string = this.router.config[i].path;
        console.log(routePath);
    }
11
ответ дан Josh1billion 24 August 2018 в 23:51
поделиться

Для @angular версии 2.00 мне удалось найти список детей через свойство routeConfig.

Вот пример моего компонента. Обратите внимание, что я получаю доступ к дочерним элементам через свойство «parent», поскольку компонент на самом деле является одним из дочерних элементов, так как я передаю его в дочерний маршрутизатор-выход.

import { Component } from '@angular/core';
import {Route, ActivatedRoute, Router} from "@angular/router";

@Component({
    selector: 'list',
    template: require('./list.component.html')
})
export class ListComponent {
    children = new Array<RouteLink>();

    constructor(private router: Router, private activatedRoute: ActivatedRoute) {
        for (let child of activatedRoute.parent.routeConfig.children) {
            if (child.path && child.data["breadcrumb"]) {
                this.children.push(new RouteLink(child.path, child.data["breadcrumb"]));
            }
        }
    }
}

export class RouteLink {
    constructor(private path: string, private name: string) {  }
}
3
ответ дан michael_hook 24 August 2018 в 23:51
поделиться

, если вы хотите посмотреть доступный маршрут, импортировав его в компонент.

назначьте свои маршруты константе, как показано ниже

const appRoutes: Routes = [
    {
        path: 'asd',
        component: asdComponent
    },
    {
        path: 'ar',
        component: arComponent
    }
];

export const routing = RouterModule.forRoot (appRoutes);

здесь вы сможете экспортировать маршруты

импортируют константную маршрутизацию

import { routing }        from './app.routing';
export class AppComponent {
   route=routing;
   /// route.providers is an array which internally contains the list of routes provided
   console.log(route.providers);
}

, это просто найти доступные маршруты. не рекомендуется применять логику на основе этого

0
ответ дан Prithvi 24 August 2018 в 23:51
поделиться

По-видимому, существует очень компактный способ сделать это:

constructor(private router: Router) {}

ngOnInit() {
  console.log('configured routes: ', this.router.config);
}
6
ответ дан Zolcsi 24 August 2018 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: