我想在 mouseover 和 mouseout 时显示和隐藏 Mat-menu,但是如何防止在点击时显示 mat-menu?
HTML
<button mat-mini-fab color="primary" [matMenuTriggerFor]="menu"
(mouseenter)="openMenu()">
<img class="face" *ngIf="isLoginIn()" [src]="faceUrl">
</button>
<mat-menu #menu="matMenu">
<div (mouseleave)="closeMenu()">
<button class="login-menu-item" mat-flat-button color="primary">Login</button>
<button class="login-menu-item" mat-flat-button color="">Logout</button>
</div>
</mat-menu>
最佳答案
您可以使用 div 而不是按钮,然后您只需要获取对 matMenuTrigger
的模板引用即可调用 mouseenter
上的打开和关闭方法和 mouseleave
事件。
<div mat-mini-fab color="primary" #menuTrigger="matMenuTrigger [matMenuTriggerFor]="menu" (mouseenter)="menuTrigger.openMenu()">
<img class="face" *ngIf="isLoginIn()" [src]="faceUrl">
</div>
<mat-menu #menu="matMenu">
<div (mouseleave)="menuTrigger.closeMenu()">
<button class="login-menu-item" mat-flat-button color="primary">Login</button>
<button class="login-menu-item" mat-flat-button color="">Logout</button>
</div>
</mat-menu>
修订
看起来像是为 mat-menu
创建一个包装器 DIV
并将 matMenuTrigger
分配给该包装器 DIV
将阻止通过单击顶部 MENU DIV
打开菜单。
<div (mouseenter)="menuTrigger.openMenu()">Menu</div>
<div #menuTrigger="matMenuTrigger" [matMenuTriggerFor]="menu">
<mat-menu #menu="matMenu" >
<div (mouseleave)="menuTrigger.closeMenu()">
<button mat-menu-item>Item 1</button>
<button mat-menu-item>Item 2</button>
</div>
</mat-menu>
</div>
关于angular - 如何防止点击显示垫菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353700/