From 2cf4da0ea11f5746eb7ae4dfd775f757576e4d98 Mon Sep 17 00:00:00 2001 From: David Neil Date: Wed, 28 Jan 2026 17:30:19 -0700 Subject: [PATCH] fix(core): hold constructors weakly in DepsTracker cache Otherwise a component can be held in memory longer than the component constructor is reachable from application code. (cherry picked from commit cab5ddd526f5a6ba44b042ba0391f0526877cde6) --- packages/core/src/render3/deps_tracker/deps_tracker.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/core/src/render3/deps_tracker/deps_tracker.ts b/packages/core/src/render3/deps_tracker/deps_tracker.ts index 73d0ded223e..5fe97a6a431 100644 --- a/packages/core/src/render3/deps_tracker/deps_tracker.ts +++ b/packages/core/src/render3/deps_tracker/deps_tracker.ts @@ -31,10 +31,13 @@ import { * An implementation of DepsTrackerApi which will be used for JIT and local compilation. */ class DepsTracker implements DepsTrackerApi { - private ownerNgModule = new Map, NgModuleType>(); + private ownerNgModule = new WeakMap, NgModuleType>(); private ngModulesWithSomeUnresolvedDecls = new Set>(); - private ngModulesScopeCache = new Map, NgModuleScope>(); - private standaloneComponentsScopeCache = new Map, StandaloneComponentScope>(); + private ngModulesScopeCache = new WeakMap, NgModuleScope>(); + private standaloneComponentsScopeCache = new WeakMap< + ComponentType, + StandaloneComponentScope + >(); /** * Attempts to resolve ng module's forward ref declarations as much as possible and add them to