Quiero agregar un componente en un elementref como hijo y tener acceso a sus propiedades.
const element: HTMLElement = document.createElement('div');
element.innerHTML = // Component needs to be added here
// Need to have access to properties of the Component here
He agregado un calendario completo a mi proyecto y para la línea de tiempo necesito agregar elementos de recursos personalizados. Para esto solo tengo acceso al elemento HTMLE y algunos datos. Entonces, lo que quiero hacer es pasar un componente inicializado al elemento HTMLE.
En este momento, mi única opción es escribir el html como la cadena y pasarlo al innerHTML. ¿Hay alguna opción mejor?
Respuestas:
En uno de mis proyectos, logré algo similar a su requerimiento de esta manera. Avísame si te ayuda
De esta manera tendrá referencia a su componente dinámico como
componentRef
fuente
Es posible que pueda usar Renderer2
Más ejemplos
fuente
La documentación angular dice
Por lo tanto, puede crear el elemento que desea agregar usando
document.createElement('elementName')
si es un elemento personalizado autónomo , odocument.createElement('baseElementName', {is: 'elementName'})
si es un elemento incorporado personalizado .Puede insertar el elemento que creó en un
container
elemento utilizandocontainer.insertAdjacentElement(position, element)
como se explica aquí .fuente
writing the html as the string and passing it to the innerHTML
fuente
dado que el componente está registrado en window.customElements,
y de acuerdo con la documentación de Angular probablemente lo sea,
podría hacer lo siguiente:
fuente
Lo que intenta lograr es imposible y va en contra de las mejores prácticas. En su lugar, debe mostrar ese componente con condiciones. Puede crear una variable en servicio y, en función de ese valor, el componente se puede mostrar o enlazar.
fuente