2

I want to intercept all events on a web page and write a log. is it possible to do that using a HostListener?

This question marked as a duplicate one. But i don't think so. We can achieve this in angular directive and Renderer2.

import { Directive, ElementRef, Renderer2 } from '@angular/core';

@Directive({
  selector: '[listener]'
})
export class ListenerDirective {

  constructor(private element: ElementRef, private render: Renderer2) {
    const result = [];
    for (const item in ((this.element.nativeElement as HTMLDivElement))) {
      if(item.indexOf('on') === 0) {
        result.push(item.replace('on', ''))
      }
    };
    result.forEach(event => {
      this.render.listen(this.element.nativeElement, event, (evt) => {
        console.log(event);
      });
    });
  }
Veeraragavan
  • 343
  • 1
  • 8
slacky82
  • 342
  • 4
  • 11

0 Answers0