Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save TheLarkInn/f73fdebb4d4bcd791aae02b74f86683c to your computer and use it in GitHub Desktop.
Save TheLarkInn/f73fdebb4d4bcd791aae02b74f86683c to your computer and use it in GitHub Desktop.
First attempt at implementation.
addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {
var zone = this.manager.getZone();
var eventsArray = this.getMultiEventArray(eventName);
// Entering back into angular to trigger changeDetection
var outsideHandler = (event) => {
zone.run(() => handler(event))
};
// Executed outside of angular so that change detection is not constantly triggered.
var addAndRemoveHostListenersForOutsideEvents = () => {
eventsArray.forEach((singleEventName: string) => {
DOM.onAndCancel(element, singleEventName, outsideHandler);
});
}
return this.manager.getZone().runOutsideAngular(addAndRemoveHostListenersForOutsideEvents);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment