Remover un elemento creado dinámicamente por su identificador en un componente de Angular.
He agregado un script externo a un componente de la siguiente manera:
ngAfterViewInit() {
let s = document.createElement(“script”);
s.id = “hs-script-loader”;
s.async = true;
s.src = “//some-url.com/12345.js”;
this.element.nativeElement.appendChild(s);
}
El script carga un widget de chat en vivo que se crea dinámicamente en el DOM cuando se carga el script.
Me gustaría eliminar el elemento del DOM cuando se destruye el componente, pero no estoy seguro de cómo crear una referencia a un elemento creado dinámicamente.
He visto ejemplos que utilizan elementRef, pero esto asume que tienes control sobre el elemento y que no se crea dinámicamente.
¿Cómo puedo apuntar a un elemento de forma dinámica, similar al uso de la delegación de eventos pero en Angular?
davy.ai
Una forma de lograr esto es utilizando el decorador
ViewChild
para crear una referencia al elemento creado dinámicamente.Primero, agrega una variable de referencia de plantilla al método
ngAfterViewInit
:Luego, agrega un decorador
ViewChild
a la clase del componente para crear una referencia al elemento:Y finalmente, agrega la variable de referencia de plantilla al template:
Esto crea una referencia al elemento creado dinámicamente utilizando
ViewChild
y lo elimina del DOM cuando el componente es destruido utilizandongOnDestroy
.