【发布时间】:2018-11-21 09:31:50
【问题描述】:
我得到了在按钮的mouseenter 事件上显示的菜单。工具栏中的所有内容:
<mat-toolbar color="primary">
<button mat-button routerLink="/products" [matMenuTriggerFor]="menu1"
#matMenu1Trigger="matMenuTrigger"
(mouseenter)="matMenu1Trigger.openMenu()">Menu1
</button>
<mat-menu #menu1="matMenu">
<div (mouseleave)="matMenu1Trigger.closeMenu()">
<button mat-menu-item>Item 1</button>
</div>
</mat-menu>
</mat-toolbar>
菜单在mouseleave 周围跨度事件时关闭,到目前为止一切顺利。
现在我想通过添加来关闭触发按钮的mouseleave 上的菜单
(mouseleave)="matMenu1Trigger.closeMenu()"
当我这样做并将鼠标移到此按钮上时,菜单开始闪烁,就像每隔几毫秒打开/关闭一次。
为什么会这样?当鼠标离开按钮时如何隐藏菜单?
https://stackblitz.com/edit/angular-kd8bue
编辑:经过一番谷歌搜索后,我发现此行为是由打开菜单时显示的叠加层引起的,如How to open mat-menu on a single click and close other opened menu if there is any? 所述。由于覆盖,我不确定我想要实现的目标是否可能......
【问题讨论】:
-
你想用
css而不是javascript试试这个吗? -
尝试将菜单的
opened值绑定到组件打字稿变量,并从事件中更改该值。例如:(HTML)<mat-menu #menu1="matMenu" [opened]="varOpened">(TYPESCRIPT):var varOpened: boolean = false;(HTML) :<div (mouseleave)="closeMenu()">(打字稿):closeMenu(){ this.varOpened=false; }。我没有测试过,但我以前总是这样处理 Angular Material 的东西,所以......让我知道它是否有效! -
@Deadpool:没有
opened这样的属性,见material.angular.io/components/menu/api
标签: javascript html angular angular-material