From 401b5bf2af500b7efd225c2ff26c94143464847d Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 5 Nov 2021 12:22:49 -0700 Subject: [PATCH] refactor(core): correct typing checks when registering destroy hooks (#44087) Making the typing filtering more explicit allows typescript to properly recognize the presence of the `prototype` property on the provider within the `registerDestroyHooksIfSupported` method. PR Close #44087 --- packages/core/src/render3/di_setup.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/render3/di_setup.ts b/packages/core/src/render3/di_setup.ts index 0791a67c558..62395d5c453 100644 --- a/packages/core/src/render3/di_setup.ts +++ b/packages/core/src/render3/di_setup.ts @@ -8,7 +8,7 @@ import {resolveForwardRef} from '../di/forward_ref'; -import {ClassProvider, Provider} from '../di/interface/provider'; +import {ClassProvider, Provider, TypeProvider} from '../di/interface/provider'; import {isClassProvider, isTypeProvider, providerToFactory} from '../di/r3_injector'; import {assertDefined} from '../util/assert'; @@ -192,7 +192,7 @@ function registerDestroyHooksIfSupported( indexInFactory?: number) { const providerIsTypeProvider = isTypeProvider(provider); if (providerIsTypeProvider || isClassProvider(provider)) { - const prototype = ((provider as ClassProvider).useClass || provider).prototype; + const prototype = ((provider as ClassProvider).useClass || provider as TypeProvider).prototype; const ngOnDestroy = prototype.ngOnDestroy; if (ngOnDestroy) { const hooks = tView.destroyHooks || (tView.destroyHooks = []);