Как открыть мат-меню при нажатой позиции - PullRequest
0 голосов
/ 07 декабря 2018

Я сделал директиву, расширяющую класс 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);

    }

}

Некоторые скриншоты Виджет длинный и переполнение автоматическое

Когда я нажимаю без прокрутки

Когда я прокручиваю и открываю его

Пожалуйста, любая помощь будет в порядке

...