在GoogleMaps API中右键单击打开MatDialog时禁用上下文菜单

时间:2019-02-13 17:01:56

标签: javascript angular google-maps events angular-material

基本上,我在我的有角项目中有一个googlemap,然后右键单击地图打开了MatDialog。效果很好,但是问题在于浏览器上下文菜单和MatDialog正在打开,这是不需要的。

HTML非常基本:

<div class="map_container">
  <div #gmap class="map_container"></div>
</div>

在我的组件中,添加侦听器:

this.map.addListener('rightclick', (e) => {
    this.dialog.open([...]);
  }
);

我工作得很好,但是正如我所说的,浏览器的上下文菜单也会打开。 e.preventDefault / e.stopPropagation / return false在这里不可用,因为...我认为我理解的原因,但是用英语解释时会遇到麻烦。长话短说,这里添加了此侦听器的事件并未传递完整的dom事件参数(我认为)。

我尝试在地图容器上添加一个(contextmenu)事件,以阻止打开上下文菜单:

<div class="map_container" (contextmenu)='preventContextMenu($event);'>

以及相关方法:

public preventContextMenu($event: Event) {
  $event.preventDefault();
}

但是,上下文菜单仍然显示在我的MatDialog中。

注意::当我没有gmaps容器时,它工作正常(无上下文菜单)。当我只有一个带有(contextmenu)事件的div时,该事件正在打开MatDialog并执行$ event.preventDefault(),浏览器会正确响应。

我到处都有答案,最终人们在整个应用程序上禁用了contextmenu,但这不是我想要实现的。

谢谢

0 个答案:

没有答案
相关问题