Skip to content

Commit 9696702

Browse files
authored
perf: prevent leak of first DOM element that uses the mwlResizable directive (#136)
1 parent 8fd74b7 commit 9696702

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

projects/angular-resizable-element/src/lib/resizable.directive.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import {
1010
NgZone,
1111
PLATFORM_ID,
1212
inject,
13+
RendererFactory2,
1314
} from '@angular/core';
14-
import { isPlatformBrowser } from '@angular/common';
15+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
1516
import { Subject, Observable, Observer, merge } from 'rxjs';
1617
import {
1718
map,
@@ -299,12 +300,20 @@ export class ResizableDirective implements OnInit, OnDestroy {
299300

300301
private zone = inject(NgZone);
301302

303+
private rendererFactory = inject(RendererFactory2);
304+
305+
private document = inject(DOCUMENT);
306+
302307
/**
303308
* @hidden
304309
*/
305310
constructor() {
311+
// Create singleton instance of PointerEventListeners to avoid creating
312+
// multiple instances of the same listener. Pass it a renderer for the
313+
// document to avoid renderer for the host element of this directive
314+
// instance.
306315
this.pointerEventListeners = PointerEventListeners.getInstance(
307-
this.renderer,
316+
this.rendererFactory.createRenderer(this.document, null),
308317
this.zone,
309318
);
310319
}

0 commit comments

Comments
 (0)