diff --git a/src/Umbraco.Web.UI.Client/src/core/controller/controller-host.mixin.ts b/src/Umbraco.Web.UI.Client/src/core/controller/controller-host.mixin.ts index a5ced89098..a334239d1b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/controller/controller-host.mixin.ts +++ b/src/Umbraco.Web.UI.Client/src/core/controller/controller-host.mixin.ts @@ -5,6 +5,7 @@ export declare class UmbControllerHostInterface extends HTMLElement { //#controllers:UmbController[]; //#attached:boolean; addController(controller:UmbController): void; + removeController(controller:UmbController): void; } /** @@ -32,6 +33,20 @@ export const UmbControllerHostMixin = (superCl } } + /** + * Remove a controller from this element. + * @param {UmbController} ctrl + */ + removeController(ctrl: UmbController): void { + const index = this.#controllers.indexOf(ctrl); + if(index !== -1) { + this.#controllers.splice(index, 1); + if(this.#attached) { + ctrl.hostDisconnected(); + } + } + } + connectedCallback() { super.connectedCallback?.(); this.#attached = true;