对数组长度变化应用动画

Apply animations on array length change

每次数组大小改变时如何应用动画?

我试过这样做,但是不行。

<div ngIf="condition" [@heightAnimation]="myList.length"></div>

动画基本上是在 :enter 时将 maxHeight 从 0 更改为 100vh,在 :leave 时将 maxHeight 从 100vh 更改为 0,当 ngIf 在 true 和 false 之间切换时它起作用,但是当更改数组长度时,动画不会执行.

有人有这个动画的例子要分享吗?

这是一个例子:

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  animations: [
    trigger('simpleFadeAnimation', [
      state('in', style({ opacity: 1, height: 100 + 'vh' })),
      transition(':enter', [
        style({ opacity: 0, height: 0 + 'vh' }),
        animate(200),
      ]),
      transition(
        ':leave',
        animate(400, style({ opacity: 0, height: 0 + 'vh' }))
      ),
    ]),
  ],
})
export class AppComponent {
  name = 'Angular';
  data = ['A', 'B', 'C'];

  add() {
    const random = Math.floor(Math.random() * 10);
    this.data.push(random.toString());
  }

  remove() {
    this.data.pop();
  }

  removeThis(index) {
    this.data.splice(index, 1);
  }
}

工作示例:https://stackblitz.com/edit/angular-animation-when-removing-jfle8g?file=src%2Fapp%2Fapp.component.ts