Eu quero adicionar um componente em um elementref como um filho e ter acesso a suas propriedades.
const element: HTMLElement = document.createElement('div');
element.innerHTML = // Component needs to be added here
// Need to have access to properties of the Component here
Adicionei um calendário completo ao meu projeto e, para a linha do tempo, preciso adicionar elementos de recursos personalizados. Para isso, só tenho acesso ao HTMLElement e alguns dados. Então, o que eu quero fazer é passar um componente inicializado para o HTMLElement.
No momento, minha única opção é escrever o html como string e passá-lo para o innerHTML. Existe uma opção melhor?
Respostas:
Em um dos meus projetos, consegui algo semelhante à sua exigência dessa maneira. Deixe-me saber se isso ajuda?
Dessa forma, você terá referência ao seu componente dinâmico como
componentRef
fonte
Você pode usar o Renderer2
Mais exemplos
fonte
A documentação Angular diz
Assim, você pode criar o elemento que deseja adicionar usando
document.createElement('elementName')
se for um elemento personalizado autônomo oudocument.createElement('baseElementName', {is: 'elementName'})
se for um elemento interno personalizado .Você pode inserir o elemento criado em um
container
elemento,container.insertAdjacentElement(position, element)
conforme explicado aqui .fonte
writing the html as the string and passing it to the innerHTML
fonte
considerando que o componente está registrado em window.customElements
e , de acordo com a documentação do Angular, provavelmente,
você pode:
fonte
O que você está tentando alcançar é impossível e contra as melhores práticas. Em vez disso, você deve mostrar esse componente com condições. Você pode criar variável em serviço e, com base nesse valor, o componente pode ser mostrado ou em loop.
fonte