import { Inject, Injectable, } from '@angular/core'; @Injectable() export class WindowResizeEventsService { public events: Map void> = new Map void>(); private _resizeTimer: number; private _currentEventID = 0; constructor( @Inject('window') private _window: Window, ) { this._window.addEventListener('resize', () => { clearTimeout(this._resizeTimer); this._resizeTimer = window.setTimeout(() => { this.events.forEach((event) => event()); }, 250); }); } public addEvent(func: () => void) { this.events.set( this._currentEventID, func, ); this._currentEventID++; return this._currentEventID; } public removeEvent( eventKey: number, ) { this.events.delete(eventKey); } }