Я сейчас пытаюсь передать данные внутри моей 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);
}
}
}