You can add a custom directive that will do this for you.
import { Directive, ElementRef, Input, HostListener } from "@angular/core"; @Directive({ selector: "[menuClose]" }) export class CloseMenuDirective { @Input() public menu: any; constructor(private element: ElementRef) { } @HostListener("click") private onClick() { this.menu.classList.remove("show"); } }
Remember to add this to your app.module in the ad array
import { CloseMenuDirective } from './directives/close-menu.directive'; @NgModule({ declarations: [ ...declarations, CloseMenuDirective ] }) export class AppModule { }
And then in your HTML, you create a link to your menu and pass that to your link element.
<div class="page-layout"> <aside class="collapse navbar-toggleable page-menu" id="navbar-header" #menu> <ul class="nav"> <li class="nav-item"> <a class="nav-link" [routerLink]="['./somewhere']" routerLinkActive="active" menuClose <!-- Our custom directive above --> [menu]="menu"> <span>My Link</span> </a> </li> </ul> </aside> </div>
source share