From 0dbf693a4d6ea0dad6072ebad20158b9e896e4f6 Mon Sep 17 00:00:00 2001 From: Jessica Janiuk Date: Tue, 25 Feb 2025 17:41:08 -0500 Subject: [PATCH] fix(core): prevent invoking replay listeners on disconnected nodes (#60103) This prevents replay from happening on nodes that have been removed from the DOM. fixes: #59841 PR Close #60103 --- packages/core/src/event_delegation_utils.ts | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/packages/core/src/event_delegation_utils.ts b/packages/core/src/event_delegation_utils.ts index f4d296b33f8..9e141081033 100644 --- a/packages/core/src/event_delegation_utils.ts +++ b/packages/core/src/event_delegation_utils.ts @@ -9,7 +9,7 @@ // tslint:disable:no-duplicate-imports import {EventContract} from '@angular/core/primitives/event-dispatch'; import {Attribute} from '@angular/core/primitives/event-dispatch'; -import {InjectionToken, Injector} from './di'; +import {InjectionToken} from './di'; import {RElement} from './render3/interfaces/renderer_dom'; export const DEFER_BLOCK_SSR_ID_ATTRIBUTE = 'ngb'; @@ -20,16 +20,6 @@ declare global { } } -export function invokeRegisteredDelegationListeners(event: Event) { - const handlerFns = (event.currentTarget as Element)?.__jsaction_fns?.get(event.type); - if (!handlerFns) { - return; - } - for (const handler of handlerFns) { - handler(event); - } -} - export function setJSActionAttributes( nativeElement: Element, eventTypes: string[], @@ -112,7 +102,7 @@ export const JSACTION_EVENT_CONTRACT = new InjectionToken( export function invokeListeners(event: Event, currentTarget: Element | null) { const handlerFns = currentTarget?.__jsaction_fns?.get(event.type); - if (!handlerFns) { + if (!handlerFns || !currentTarget?.isConnected) { return; } for (const handler of handlerFns) {