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);
      });
    });
  }