angular - 如何防止点击时显示 mat-menu?
问题描述
我想在鼠标悬停和鼠标移出时显示和隐藏 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
上调用 open 和 close 方法。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>
修订
看起来为创建包装器DIV
并将mat-menu
分配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>
推荐阅读
- javascript - 如何在 React 中从非 React 库中渲染 div 对象?
- git - 将分支恢复到旧位置的最佳方法是什么?
- xml - 修改python-docx中paragraph.style._element.xml中的XML
- javascript - 我想使用 document.getElementByID 自动填充网络表单,但是每当我返回网站时,ID 都会不断变化
- sql - 如何列出 Teradata 中所有定义的宏?
- laravel-5.8 - 如何扩展 FaCuZ/laravel 主题中的布局?
- javascript - 将子组件中的文本字段链接到 VueJS 中父组件的道具
- android - 可以在打印 logcat 之前获取日志吗?
- kubernetes - 在 helm kubernetes 中使用 secret 存储敏感数据
- css - 反应原生弹性和宽度百分比不同