Есть ли способ отследить, где был выполнен клик при прослушивании кликов с помощью renderer.listenGlobal()?

У меня есть эта директива, которая должна отслеживать клики во всех компонентах приложения. Проверить, был ли выполнен щелчок, легко; Я внедрил экземпляр Renderer и вызвал его метод listenGlobal() и вывел сообщение на консоль всякий раз, когда был щелчок. Вот код;

export class TrackerDirective {
    constructor( private _renderer: Renderer) {
        let listener = this._renderer.listenGlobal("document", "click", () =>
            {
                console.log("Clicked...");
            }
        );
    }
}

Теперь вопрос; есть ли способ отследить элемент (или компонент), на котором фактически был выполнен щелчок? Я знаю об использовании ElementRef и @HostListener() для отслеживания событий, но я не могу их использовать. Любая помощь будет высоко оценена.


person Ali Zia Khan    schedule 03.03.2017    source источник


Ответы (1)


Если вы добавите параметр в обработчик события, вы получите событие, переданное

export class TrackerDirective {
    constructor( private _renderer: Renderer) {
        let listener = this._renderer.listenGlobal("document", "click", (event) =>
            {
                console.log(event.screenX, event.screenY, event.clientX, event.clientY);
            }
        );
    }
}

См. также https://developer.mozilla.org/en/docs/Web/Events/click для других значений, которые вы можете получить из события click.

person Günter Zöchbauer    schedule 03.03.2017
comment
Спасибо. Работает как шарм. - person Ali Zia Khan; 06.03.2017