如何使材质设计菜单(mat-menu)隐藏在mouseleave上

gla*_*oon 2 angular-material2 angular

我成功地使菜单出现了mouseenter.我现在要做的是让它mouseleave在菜单本身的事件中消失.有关如何实现这一目标的任何想法?

    <button mat-button [mat-menu-trigger-for]="menu" 
     #menuTrigger="matMenuTrigger" (mouseenter)="menuTrigger.openMenu()">
        TRIGGER BUTTON
    </button>
    <mat-menu #menu="matMenu" [overlapTrigger]="false" 
     (mouseleave)="menuTrigger.closeMenu()">
         <button mat-menu-item [routerLink]="['sources']">
              <mat-icon>view_headline</mat-icon>
              MENU CHOICE
        </button>
    </mat-menu>
Run Code Online (Sandbox Code Playgroud)

Mic*_*oye 9

您可以通过将菜单按钮包装在<span>元素中来完成此操作:

HTML:

<button mat-button 
  [matMenuTriggerFor]="menu" 
  (mouseenter)="openMyMenu()">
  Trigger
</button>
<mat-menu #menu="matMenu" overlapTrigger="false">
  <span (mouseleave)="closeMyMenu()">
    <button mat-menu-item>Item 1</button>
    <button mat-menu-item>Item 2</button>
  </span>
</mat-menu>
Run Code Online (Sandbox Code Playgroud)

零件:

export class MenuOverviewExample {
  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;

  openMyMenu() {
    this.trigger.openMenu();
  } 
  closeMyMenu() {
    this.trigger.closeMenu();
  }  
}
Run Code Online (Sandbox Code Playgroud)


演示(V5):

StackBlitz

材料V6:

StackBlitz