From 8eef9984045b23099f18b8459d976d6f5152fc79 Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Wed, 13 Apr 2022 23:27:42 -0700 Subject: [PATCH] fix(cdk/portal): prevent calling `ApplicationRef.detachView` on destroyed instance This commit adds a check that ensures that the `ApplicationRef.detachView` is only called when there are some registered views in the `ApplicationRef` instance (thus the instance is not destroyed). --- src/cdk/portal/dom-portal-outlet.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cdk/portal/dom-portal-outlet.ts b/src/cdk/portal/dom-portal-outlet.ts index 1c473e24f872..168793b1a288 100644 --- a/src/cdk/portal/dom-portal-outlet.ts +++ b/src/cdk/portal/dom-portal-outlet.ts @@ -87,7 +87,11 @@ export class DomPortalOutlet extends BasePortalOutlet { ); this._appRef!.attachView(componentRef.hostView); this.setDisposeFn(() => { - this._appRef!.detachView(componentRef.hostView); + // Verify that the ApplicationRef has registered views before trying to detach a host view. + // This check also protects the `detachView` from being called on a destroyed ApplicationRef. + if (this._appRef!.viewCount > 0) { + this._appRef!.detachView(componentRef.hostView); + } componentRef.destroy(); }); }