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(); + }); }); });