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