Few #menu items has no sub child. But shows the arrow which indicates there is a submenu. Which is wrong. How to add [matMenuTriggerFor]="subMenu" only when there are items in subMenu. <mat-menu #menu="matMenu"> <ng-container *ngFor="let item of menuItem.items; let i=index"> <button class="mat-menu-item" mat-menu-item [routerLink]="item.routerLink" routerLinkActive="active" [matMenuTriggerFor]="subMenu"> {{item.name}} </button> <mat-menu #subMenu="matMenu"> <button class="mat-sub-menu-item" *ngFor="let subitem of menuItem.items.subitems" mat-menu-item> {{ subitem.name }} </button> </mat-menu> </ng-container> </mat-menu> Continue reading...