import { Component, OnInit } from '@angular/core'; import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ActivatedRoute, NavigationEnd } from '@angular/router'; import {BreadcrumbModule,MenuItem} from 'primeng/primeng'; @Component({ selector: 'breadcrumb', templateUrl: './breadcrumb.component.html', styleUrls: ['./breadcrumb.component.css'] }) export class BreadcrumbComponent implements OnInit { breadcrumbHome: MenuItem = {icon: 'fa fa-home', routerLink: "/welcome"}; breadcrumbData: MenuItem[] = new Array(); ngOnInit() { } constructor(private router: Router, private route: ActivatedRoute) { router.events.subscribe( event =>{ console.log("Router event captured") console.log(event) if(event instanceof NavigationEnd){ //this.breadcrumbData.push("") console.log(event.urlAfterRedirects); console.log(this.route); //this.breadcrumbData.length = 0; this.route.children.forEach( child => { let menuItem : MenuItem = this.guessMenuItemFromActivatedRoute(child, event); if(menuItem != null) { this.adaptBreadcrumbByMenuItem(menuItem); //this.breadcrumbData.push(menuItem); } }) } }); } guessMenuItemFromActivatedRoute(activatedRoute : any, event : NavigationEnd) { //it's important to leave it as "any" let menuItem : MenuItem = null; let componentName = activatedRoute.component.name; let params = activatedRoute.queryParams.getValue(); let url = event.urlAfterRedirects.split("?")[0]; let label = null; if(componentName == "ProjectsComponent") { label = "My Projects"; } if(componentName == "DmpComponent"){ label = "My Data Management Plans"; } if(componentName == "DatasetsComponent"){ label = "Datasets of DMP '"+params["label"]+"'"; } if(componentName == "DynamicFormComponent"){ label = "Form of dataset '"+params["label"]+"'"; } if(label != null) menuItem = {"label": label, "routerLink": url, "queryParams" : params }; console.log("COMPONENT NAME="+componentName); return menuItem; } adaptBreadcrumbByMenuItem(menuItem : MenuItem){ let breadcrumbDataNew: MenuItem[] = new Array(); for(var i=0; i