Вы можете использовать Angular анимацию здесь, например: stackblitz
Здесь шаг для создания анимации:
1) добавить файл listAnimation .ts
import {
state,
animate,
transition,
query,
group,
style,
trigger,
stagger,
keyframes
} from "@angular/animations";
export const ListAnimation =
trigger('ListAnimation', [
transition('* => *', [
query(':enter',style({opacity: 0}), {optional: true }),
query(':enter', stagger('100ms',[
animate('1s ease-in', keyframes([
style({opacity:0, transform:'translateY(-100px)', offset: 0}),
style({opacity:0.3, transform:'translateY(50px)', offset: .3}),
style({opacity:1, transform:'translateY(0)', offset: 1}),
]))
]), { optional: true }),
query(':leave', stagger('100ms',[
animate('1s ease-in', keyframes([
style({
opacity: 1,
transform: 'translateY(0) scale(1)',
offset: 0
}),
style({
opacity: 0.5,
transform: 'translateY(50px) scale(1.2)',
offset: .01
}),
style({
opacity: .3,
transform: 'translateY(-50px) scale(1.5)',
offset: 1
})
]))
]), { optional: true })
])
]);
2) обновите здесь свой модуль приложения для добавления модуля анимации
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
imports: [
BrowserModule,
FormsModule, BrowserAnimationsModule ],
.............
..........
3) импортируйте анимацию из файла анимации, например:
import { Component } from '@angular/core';
import { ListAnimation } from './listAnimation.ts';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
animations:[ListAnimation]
})
export class AppComponent {
name = 'Angular';
showitem=false;
Listitems=['item 1','item 2','item 3','item 4','item 5','item 6','item 7'];
showToggle() {
this.showitem= this.showitem ? false:true;
}
deleteItem(i) {
this.Listitems.splice(i,1);
}
}
4) наконец-то реализуем анимацию ваших элементов шаблона, например:
<button (click)='showToggle()'>show item</button>
<ul [@ListAnimation]="Listitems.length" *ngIf="showitem" class="text-left mt-2">
<li *ngFor="let item of Listitems; let i=index">{{item}} {{i+1}} <span (click)="deleteItem(i)">❌</span></li>
</ul>