Consegui fazer algo parecido, mas, sem o BIND [@listState], apenas com o @listState na div container-card, visto que, o ":enter" já dá conta de disparar a animação, não sendo necessário consultar o retorno do Observable. Entretando, tanto com o BIND, quanto sem BIND:
- Os 2 query dão match em tudo que sai/entra, quando estes saem/entram 100%. Se tento fazer uma nova consulta, com algo "distinctUntilChanged" do anterior, a animação não é disparada;
- O ng-template também é "animado", e aparece quando saem os cards;
- O query não "consulta" em níveis aninhados? Entendi que não, pois quando coloco ".card:leave" (que está há um DIV aninhado), a animação não dispara.