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

Aplicação de Filtros

Quero fazer um componente para filtrar os dados. É possível criar mais de um filtro e aplicar ao mesmo tempo numa lista de dados?

Por exemplo: Tenho uma tabela que exibe todos os usuários. Quero fazer filtros pelo nome e pelo tipo de usuário, sendo que eles seriam combinados e aplicados de maneira conjunta.

4 respostas

Sim, é possível.

Pelo nível da sua pergunta, imagino que saiba aplicar os filtros, sabendo isso, basta criar uma sequencia de filtros aplicados, exemplo:

Um único filtro numa expression:

"lista | filtro"

Três filtros numa expression:

"lista | filtro1 | filtro2 | filtro3"

Nesse último exemplo, o resultado de um filtro é passado para o próximo.

Exatamente essa a ideia, porém dessa maneira fica um dependendo do outro? Tipo, pra que a expressão funcione, tenho que preencher primeiro o filtro1, depois o 2 e assim por diante?

No meu caso, eu queria que, independente da ordem de preenchimento, que os filtros funcionem em conjunto, visto que eu não quero obrigar o usuário a preencher os filtros seguindo uma ordem...

solução!

Bem, nesse caso depende de como você pretende implementar esse filtro. Caso a ideia seja colocar um único input da tela, é possível utilizar o filtro 'filter' do angular:

Seu input:

<input type="text" ng-model="valorDoInput">

E sua expression:

"lista | filter: valorDoInput"

Nesse último exemplo, passando somente uma String, o filtro é realizado considerando todos os campos do modelo presente na sua lista.

Caso queria criar um form um pouco mais elaborado com vários input's, também é possível utilizar o "filter", mas nesse caso passando um objeto no mesmo modelo dos itens da sua lista.

Seus inputs:

<input type="text" ng-model="objetoFiltro.campo1">
<input type="text" ng-model="objetoFiltro.campo2">

E sua expression:

"lista | filter: objetoFiltro"

Algum resultado?

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