В моем приложении я создал динамическое меню, отображаемое кнопкой:
<button mat-button [matMenuTriggerFor]="menulist"><mat-icon>menu</mat-icon>{{menuName}}</button>
<mat-menu #menulist="matMenu">
<button *ngFor="let menu of menus" mat-menu-item [routerLink]="menu.link">{{menu.name}}</button>
</mat-menu>
и в тс я настроил разные меню и при смене маршрута меняю выбранное меню:
menus = [
{ name: 'Menu 1', link: '/route1', active: false },
{ name: 'Menu 2', link: '/route2', active: false }
];
constructor(
public router: Router,
private location: Location
) {
this.router.events
.pipe(filter(event => event instanceof NavigationEnd))
.subscribe(({ urlAfterRedirects }: NavigationEnd) => {
const url = urlAfterRedirects.split(';')[0];
const urlAsArray = url.split('/');
this.menus.forEach(menu => {
menu.active = urlAfterRedirects.startsWith(menu.link);
if (menu.active) {
this.menuName = menu.name;
}
});
});
}
Надеюсь, это поможет вам.
Привет