基本上,我在我的有角项目中有一个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,但这不是我想要实现的。
谢谢