Если вы не говорите об анимации маршрутизатора, я думаю, вам придется поддерживать состояние анимации, используя установщик @Input()
и функцию анимации done
.Пример здесь https://stackblitz.com/edit/angular-lmmixg
Дочерний компонент ts:
@Input() set data(data: any) {
this.dataState = 'entering';
this._data = data;
}
get data() { return this._data };
_data: any;
dataState: 'entering' | 'done' = 'done';
Дочерний компонент html:
<div [@dataChange]="dataState" (@dataChange.done)="dataState = 'done'">{{ data }}</div>
Анимация ts:
export const dataChange: AnimationTriggerMetadata = trigger('dataChange', [
transition('done => entering', [
style({
'margin-left': '90%'
}),
animate('200ms ease',
style({ 'margin-left': '*' }))
]),
]);