import { Component, OnInit, Input } from "@angular/core"; import { Router, NavigationStart } from "@angular/router"; import { filter, take } from "rxjs/operators"; @Component({ selector: "app-nav-menu", templateUrl: "./nav-menu.component.html", styleUrls: ["./nav-menu.component.scss"] }) export class NavMenuComponent implements OnInit { @Input() menuData: object[]; constructor(public route: Router) {} ngOnInit() { this.route.events .pipe( filter(event => event instanceof NavigationStart), take(1) ) .subscribe((event: any) => { this.mapRouter(event.url, this.menuData); }); } ngAfterViewInit(): void {} mapRouter(url: string, menuData: any[]) { let tmpState = false; menuData.forEach((item, index) => { if (item.type === "button") { tmpState = this.mapRouter(url, item.subMenu); item.expand = tmpState; } else { if (item.url === url) { tmpState = true; } } }); return tmpState; } }