1
resposta

Animação dispara apenas uma vez

Percebi que foi duvida de outro aluno tambem, andei pesquisando e percebi que o angular não dispara novamente a animação em caso de uma segunda pesquisa porque ele não reconhece nenhuma mudança na lista de livros, e a solução é mais simples do que parece.

basta relacionar a animação com o resultado retornado do observable que seria a listaLivros.length , dessa maneira ele sempre irá detectar a mudança no DOM e a animação será ativada sempre que realizar uma nova pesquisa, Isso força a detecção de mudanças no trigger, e é um truque limpo e eficaz para garantir a reexecução das animações.

espero que essa informação ajude outros estudantes.

class="container-card"
*ngIf="livrosEncontrados$ | async as listaLivros; else telaInicial"
[@booksAnimation]="listaLivros.length"
1 resposta

Oii, Henrique! Tudo beleza?

Muito legal você trazer essa explicação aqui no Fórum — ficou clara, prática e com um exemplo direto no código!

Você identificou muito bem um comportamento típico do Angular com animações baseadas em estados: se o framework não detecta uma mudança de valor, ele não reexecuta a animação. E usar listaLivros.length como trigger foi uma sacada esperta, porque força o Angular a perceber que algo mudou no DOM a cada nova busca.

Esse tipo de "truque limpo", como você chamou, é super valioso no dia a dia e ajuda bastante quem tá no processo de entender melhor como funcionam as animações reativas.

Obrigada por compartilhar com a galera — com certeza vai ajudar outros estudantes!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!