По сути, у меня есть 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.Когда у меня есть только один div с событием (contextmenu), открывающим MatDialog и выполняющим $ event.preventDefault (), браузер отвечает правильно.
Я видел ответы здесь и там, где люди заканчивалиотключить контекстное меню для всего приложения, но это не то, чего я хочу достичь.
Спасибо