Я сделал директиву, расширяющую класс MatTrigger для открытия меню коврика при щелчке правой кнопкой мыши.Это нормально работает, но вот моя проблема.Меню «Виджет, который я открываю» очень длинное (переполняет весь видовой экран). Виджет виден только в квадрате, весь виджет переполнен.Таким образом, матовое меню открывается при щелчке правой кнопкой мыши в любом месте строки.Но меню открывается либо в начале строки таблицы, либо когда я немного прокручиваю по горизонтали, затем в конце на виджете (Прикрепленные снимки экрана).
Я хочу открыть это меню в той позиции, где щелкают мышью.
Любая помощь приветствуется.Спасибо
Моя директива
import { Directive, Input, OnInit, ElementRef, HostListener } from '@angular/core';
import { MatMenuTrigger, MatMenuPanel } from '@angular/material';
@Directive({
selector: '[appRightMenuClick]',
host: {
'aria-haspopup': 'true',
'(click)': '_handleClick(event)',
'(contextmenu)': 'handleContext(event)
′
,
′
(contextmenu)
′
:
′
handleContext(event)',
}
})
export class RightMenuClickDirective extends MatMenuTrigger {
@Input('appRightMenuClick')
get _menuFor(): MatMenuPanel {
return this.menu;
}
set _menuFor(v: MatMenuPanel) {
this.menu = v;
}
_handleClick(e) {
// left click
}
handleContext(e) {
this.menu.xPosition = 'before';
e.preventDefault(); // prevents the browsers context menu
super._handleClick(e);
// Some of My tries
// const menu = document.getElementsByClassName('mat-menu-panel')[0];
// menu.parentElement.parentElement.style.position = 'relative';
// menu.parentElement.parentElement.style.margin = '5px';
// menu.parentElement.parentElement.style.marginLeft = e.x + 'px';
// menu.parentElement.parentElement.style.setProperty('left', '0', 'important');
// console.log(e.x, menu.parentElement.parentElement);
}
}
Некоторые скриншоты Виджет длинный и переполнение автоматическое
Когда я нажимаю без прокрутки
Когда я прокручиваю и открываю его
Пожалуйста, любая помощь будет в порядке