From bb018c530f6ae5839e30bb8098a215caecfd42e9 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 22 May 2024 16:18:02 +0200 Subject: [PATCH] MOBILE-4470 format-text: Destroy instances of external-content --- src/core/directives/format-text.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/directives/format-text.ts b/src/core/directives/format-text.ts index 838096107..fb9be80fa 100644 --- a/src/core/directives/format-text.ts +++ b/src/core/directives/format-text.ts @@ -99,6 +99,7 @@ export class CoreFormatTextDirective implements OnChanges, OnDestroy, AsyncDirec protected emptyText = ''; protected domPromises: CoreCancellablePromise[] = []; protected domElementPromise?: CoreCancellablePromise; + protected externalContentInstances: CoreExternalContentDirective[] = []; constructor( element: ElementRef, @@ -145,6 +146,7 @@ export class CoreFormatTextDirective implements OnChanges, OnDestroy, AsyncDirec this.domElementPromise?.cancel(); this.domPromises.forEach((promise) => { promise.cancel();}); this.elementControllers.forEach(controller => controller.destroy()); + this.externalContentInstances.forEach(extContent => extContent.ngOnDestroy()); } /** @@ -191,6 +193,8 @@ export class CoreFormatTextDirective implements OnChanges, OnDestroy, AsyncDirec extContent.ngAfterViewInit(); + this.externalContentInstances.push(extContent); + const changeDetectorRef = this.viewContainerRef.injector.get(ChangeDetectorRef); changeDetectorRef.markForCheck(); @@ -341,6 +345,10 @@ export class CoreFormatTextDirective implements OnChanges, OnDestroy, AsyncDirec * Format contents and render. */ protected async formatAndRenderContents(): Promise { + // Destroy previous instances of external-content. + this.externalContentInstances.forEach(extContent => extContent.ngOnDestroy()); + this.externalContentInstances = []; + if (!this.text) { this.element.innerHTML = this.emptyText; // Remove current contents.