Как создать MouseEvent в Angular, включая свойства местоположения - PullRequest
0 голосов
/ 27 августа 2018

Мне нужно отловить событие нажатия на кнопку и изменить только событие type и отправить его снова

что-то похожее ниже, что в jquery, но я хочу сделать это в угловых

button.on("click", function(event) {
              var newEvent = $.extend({}, event, { type: "dxcontextmenu" });
              event.stopPropagation();
              $(this).trigger(newEvent);
            });

Я могу сделать dispatchEvent, но у конструктора Event или MouseEvent нет параметров для screenX или clientX или ...

Я пытался использовать оператор распространения или Object.Assign, но будут скопированы только свойства isTrusted и type.

мой код

onClick(event:any) {
    event.stopPropagation();

        console.log(event);

        const newEvent = Object.assign({}, event, { type: 'dxcontextmenu' });
        console.log(newEvent);
        event.target.dispatchEvent(newEvent);

    // event.target.dispatchEvent(new Event('dxcontextmenu', { bubbles: true }));

  }

это стекаблица ссылка на него

1 Ответ

0 голосов
/ 27 августа 2018

Я нашел решение в случае, если другие имеют такую ​​же проблему

openContextMenu(event: MouseEvent)
{
    if (event.target)
    {
        const newEvent = new MouseEvent('dxcontextmenu', { bubbles: true });
        newEvent.initMouseEvent(
            'dxcontextmenu',
            true,
            false,
            event.view,
            event.detail,
            event.screenX,
            event.screenY,
            event.clientX,
            event.clientY,
            event.ctrlKey,
            event.altKey,
            event.shiftKey,
            event.metaKey,
            event.button,
            event.relatedTarget
        );

        event.stopPropagation();
        event.target.dispatchEvent(newEvent);
    }
}
...