Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Angular 2

Boa tarde. Quero criar um componente dataTable, porém eu quero o <table></table> em um componente e os <tr></tr> em outro. Ex.:

<dataTable [valor]="{{listaDePessoas}}">
    <dataTableColumn [titulo]="'Nome'" [valor]="'nome'"></dataTableColumn>
    <dataTableColumn [titulo]="'Idade'" [valor]="'idade'"></dataTableColumn>
    ...
</dataTable>

eu vi @ViewChield, mas ele só encontra os componentes filho que estão no template do componente que está buscando. Eu queria de alguma maneira, conseguir pegar o titulo e o valor no dataTable, ou seja, umas lista de todos os dataTableRow que podem ter (todos podem ser n)

2 respostas

Fala au Alan, tudo bem ?

Cara parece que a galera ainda não tá manjando tanto assim de angular aqui na plataforma, mas não desanima não, você pode nos ajudar falando se descobriu

solução!

Opa, tudo certo. Foi até bom que me lembrou desse post. Eu consegui resolver :) E é até simples se for ver. Para resolver o meu problema, foi necessário utilizar o decorator @ContentChild(). O que esse decorator vai fazer é pegar todos os componetes que forem do tipo declarado nele (Ex.:@ContentChild(TableColumnComponent)) que estejam aninhados ao seu componente fora do seu template, que é o caso do TableColumnComponent. O que quero dizer é: voce não sabe quantos TableColumnComponenthaverá, isso é usuário do componente que criará conforme a necessidade. Com esse decorator, vc terá acesso normal ao objeto, acesso aos atributos e métodos públicos e a partir daí é só deixar as idéias fluirem.

Só pra completar, o uso desse decorator fica assim:

@ContentChildren(DataTableColumnComponent)
    private columns: DataTableColumnComponent[]

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software