From fdd8fb0e660a3a8f089b98d26f6e22a0a95fc2ea Mon Sep 17 00:00:00 2001 From: Thomas Nguyen Date: Fri, 28 Jun 2024 14:20:50 -0700 Subject: [PATCH] refactor(core): Add an ngOnDestroy to GlobalEventDelegation. (#56762) It seems that this makes test libs that contain > 1 test file pass. PR Close #56762 --- packages/core/src/event_delegation_utils.ts | 7 ++++++- packages/core/test/event_dispatch/event_dispatch_spec.ts | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/core/src/event_delegation_utils.ts b/packages/core/src/event_delegation_utils.ts index 9ed48364634..ad67f065d69 100644 --- a/packages/core/src/event_delegation_utils.ts +++ b/packages/core/src/event_delegation_utils.ts @@ -20,6 +20,7 @@ import {Attribute} from '@angular/core/primitives/event-dispatch'; import {Injectable, InjectionToken, Injector, inject} from './di'; import {RElement} from './render3/interfaces/renderer_dom'; import {EVENT_REPLAY_ENABLED_DEFAULT, IS_EVENT_REPLAY_ENABLED} from './hydration/tokens'; +import {OnDestroy} from './interface/lifecycle_hooks'; declare global { interface Element { @@ -82,9 +83,13 @@ export const GLOBAL_EVENT_DELEGATION = new InjectionToken * `provideGlobalEventDelegation` is called. */ @Injectable() -export class GlobalEventDelegation { +export class GlobalEventDelegation implements OnDestroy { private eventContractDetails = inject(JSACTION_EVENT_CONTRACT); + ngOnDestroy() { + this.eventContractDetails.instance?.cleanUp(); + } + supports(eventName: string): boolean { return isSupportedEvent(eventName); } diff --git a/packages/core/test/event_dispatch/event_dispatch_spec.ts b/packages/core/test/event_dispatch/event_dispatch_spec.ts index d58dbc3b65b..fd7816a08aa 100644 --- a/packages/core/test/event_dispatch/event_dispatch_spec.ts +++ b/packages/core/test/event_dispatch/event_dispatch_spec.ts @@ -18,7 +18,6 @@ function configureTestingModule(components: unknown[]) { describe('event dispatch', () => { let fixture: ComponentFixture; - afterEach(() => fixture.debugElement.injector.get(ɵJSACTION_EVENT_CONTRACT).instance?.cleanUp()); it(`executes an onclick handler`, async () => { const onClickSpy = jasmine.createSpy();