我正试图在:离开转换时为一个元素设置动画,我对它的行为感到有些困惑。
trigger('inOut', [
transition(':enter', [
style({'max-height': '0'}),
animate(250, style({'max-height': '150px'}))
], { params: { maxHeight: '150px'}}),
所以我希望我的动画元素在动画的最后一帧设置最大高度为15px ......然后离开那里!我可以看到最大高度被动画,但最后它被移除,元素缩放到适合其内容的任何高度。苦苦想象这是如何有用的,我做错了什么?
更新 - 用此
解决了这个问题trigger('inOut', [
state('void', style({'max-height': '0'})),
state('*', style({'max-height': '{{maxHeight}}'}), { params: { maxHeight: '0px'}}),
transition(':enter', animate(300)),
transition(':leave', animate(250))
]),
答案 0 :(得分:1)
解决此问题的方法是在动画结束时使用state
,并使用(@animation.done)
来触发此状态。
<强> app.component.html 强>
<div [@routeAnimations]="state" (@routeAnimations.done)="onDone($event)" class="animate-div">
</div>
<强> app.component.ts 强>
import { trigger, style, state, animate, transition } from '@angular/animations';
@Component({
animations: [
trigger('routeAnimations', [
state('done', style({
maxHeight: '150px'
})),
transition(':enter', [
style({ 'max-height': '0' }),
animate(1000, style({ 'max-height': '150px' }))
], { params: { maxHeight: '150px' } })
])
]
})
export class AppComponent {
state = '';
onDone(event) {
this.state = 'done';
}
}