Передать параметр Dynami c в качестве данных для маршрута. - PullRequest
0 голосов
/ 25 марта 2020

Я сейчас пытаюсь передать данные внутри моей Angular маршрутизации. Поскольку он имеет значение c, я хочу передать параметр :name в маршрут (в данном случае data: {breadcrump: ...) - как я могу это сделать?

{path: 'products', component: ProductsComponent, data: {breadcrump: 'Produkte'}, children: [
  {path: '', data: {breadcrump: null}, component: ProductOverviewComponent},
  {path: ':name', data: {breadcrump: 'Test'}, component: ProductPageComponent},
]},
export class ProductsBreadcrumpComponent implements OnInit {

  menuItems;

  constructor(private router: Router, private activatedRoute: ActivatedRoute) {
  }

  ngOnInit(): void {
    this.menuItems = this.createBreadcrumbs(this.activatedRoute.root);
    this.router.events
      .pipe(filter(event => event instanceof NavigationEnd))
      .subscribe(() => this.menuItems = this.createBreadcrumbs(this.activatedRoute.root));
  }

  createBreadcrumbs(route: ActivatedRoute, url: string = '', breadcrumbs: MenuItem[] = []): MenuItem[] {
    const children: ActivatedRoute[] = route.children;

    if (children.length === 0) {
      return breadcrumbs;
    }

    for (const child of children) {
      const routeURL: string = child.snapshot.url.map(segment => segment.path).join('/');
      if (routeURL !== '') {
        url += `/${routeURL}`;
        console.log(url);
      }

      const label = child.snapshot.data.breadcrump;
      if (label) {
        breadcrumbs.push({label, url});
      }

      return this.createBreadcrumbs(child, url, breadcrumbs);
    }
  }


}
...