From ec48c8305c40fbafbab51801f93bb4e4b6a25ea0 Mon Sep 17 00:00:00 2001 From: Edu Date: Wed, 2 Sep 2026 00:19:21 +0000 Subject: [PATCH] fix(core): return null when getDirectiveMetadata is called with null or undefined Safely return null instead of throwing an unhandled TypeError when getDirectiveMetadata is called with a falsy directive or component instance. (cherry picked from commit cea6896a0fef4fa4f37a4c7a43c7a880900eb21d) --- packages/core/src/render3/util/discovery_utils.ts | 3 +++ packages/core/test/acceptance/discover_utils_spec.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/packages/core/src/render3/util/discovery_utils.ts b/packages/core/src/render3/util/discovery_utils.ts index ac03e0ede91..37d630042cb 100644 --- a/packages/core/src/render3/util/discovery_utils.ts +++ b/packages/core/src/render3/util/discovery_utils.ts @@ -304,6 +304,9 @@ export type DirectiveDebugMetadata = export function getDirectiveMetadata( directiveOrComponentInstance: any, ): AngularComponentDebugMetadata | AngularDirectiveDebugMetadata | null { + if (!directiveOrComponentInstance) { + return null; + } const {constructor} = directiveOrComponentInstance; if (!constructor) { throw new Error('Unable to find the instance constructor'); diff --git a/packages/core/test/acceptance/discover_utils_spec.ts b/packages/core/test/acceptance/discover_utils_spec.ts index b5b58bdf4ec..921d44d4e7d 100644 --- a/packages/core/test/acceptance/discover_utils_spec.ts +++ b/packages/core/test/acceptance/discover_utils_spec.ts @@ -405,6 +405,11 @@ describe('discovery utils', () => { expect(metadata!.inputs).toEqual({a: 'b'}); expect(metadata!.outputs).toEqual({c: 'd'}); }); + + it('should return null when passed null or undefined', () => { + expect(getDirectiveMetadata(null)).toBeNull(); + expect(getDirectiveMetadata(undefined)).toBeNull(); + }); }); });