From 7680a27f306f2cfe39b67f085896324c2429c698 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Mon, 28 Apr 2025 09:37:26 -0700 Subject: [PATCH] refactor(core): Ignore errors related to updating exhaustive check value (#61027) this can happen if the injector is already destroyed, which can happen in tests that fail to clean up correctly PR Close #61027 --- packages/core/src/render3/view_ref.ts | 20 ++++++++++--------- .../bundling/defer/bundle.golden_symbols.json | 1 - 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/core/src/render3/view_ref.ts b/packages/core/src/render3/view_ref.ts index b36905a630a..0fe643e55f3 100644 --- a/packages/core/src/render3/view_ref.ts +++ b/packages/core/src/render3/view_ref.ts @@ -51,7 +51,7 @@ interface ChangeDetectorRefInterface extends ChangeDetectorRef {} export class ViewRef implements EmbeddedViewRef, ChangeDetectorRefInterface { private _appRef: ApplicationRef | null = null; private _attachedToViewContainer = false; - private readonly exhaustive: boolean = USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT; + private exhaustive?: boolean; get rootNodes(): any[] { const lView = this._lView; @@ -80,14 +80,7 @@ export class ViewRef implements EmbeddedViewRef, ChangeDetectorRefInterfac * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view. */ private _cdRefInjectingView?: LView, - ) { - if (typeof ngDevMode === 'undefined' || ngDevMode) { - this.exhaustive = this._lView[INJECTOR].get( - UseExhaustiveCheckNoChanges, - USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT, - ); - } - } + ) {} get context(): T { return this._lView[CONTEXT] as unknown as T; @@ -334,6 +327,15 @@ export class ViewRef implements EmbeddedViewRef, ChangeDetectorRefInterfac */ checkNoChanges(): void { if (!ngDevMode) return; + + try { + this.exhaustive ??= this._lView[INJECTOR].get( + UseExhaustiveCheckNoChanges, + USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT, + ); + } catch { + this.exhaustive = USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT; + } checkNoChangesInternal(this._lView, this.exhaustive); } diff --git a/packages/core/test/bundling/defer/bundle.golden_symbols.json b/packages/core/test/bundling/defer/bundle.golden_symbols.json index 320abc3a60c..5778f6ad4fa 100644 --- a/packages/core/test/bundling/defer/bundle.golden_symbols.json +++ b/packages/core/test/bundling/defer/bundle.golden_symbols.json @@ -170,7 +170,6 @@ "TYPE", "TracingAction", "TracingService", - "USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT", "USE_VALUE", "UnsubscriptionError", "VIEW_REFS",