如何打开mat-menu单击并关闭其他打开的菜单(如果有的话)?

时间:2018-01-26 18:00:11

标签: angular typescript angular-material

我遇到了这个问题,当有一个标题多个菜单时,当我第一次打开菜单没有问题,但是如果已经打开了一个菜单,我点击打开第二个菜单它没有& #39;工作。它将首先关闭先前打开的菜单,然后我们必须再次单击以打开新菜单。

我想要的是,当我点击一个菜单时,它应该只需单击即可打开,如果有任何菜单打开,它也会关闭。我还没有在angular2材料文档中发现任何相关内容。

以下是该问题示例的链接:

https://stackblitz.com/edit/angular-8ntb2i

1 个答案:

答案 0 :(得分:3)

没有简单的方法可以解决这个问题,因为当菜单打开时,全屏叠加也会显示。叠加层用于检测点击,然后关闭菜单并删除叠加层。正如您已经猜到的那样,这个叠加会阻止点击另一个菜单触发器,当另一个菜单已经打开时,我们无法打开菜单。

作为一种解决方法,您可以执行以下操作:

在叠加层上抓住点击事件,获取xy轴,在删除叠加层后,您可以检查,用户是否要点击其他菜单(您可以使用this post),如果是,则在同一轴上模拟另一次点击。