【发布时间】:2017-08-27 12:07:06
【问题描述】:
我有一个可以扩展/收缩的容器。该容器内有一个元素,该元素应在容器扩展时淡入,在容器收缩时淡出。
我的问题
- 当容器展开时,两个元素的动画都会起作用。
- 当容器缩小时,只有容器动画起作用。
- 如果我删除了容器展开动画,那么淡入/淡出动画会按预期工作。
如何让所有动画在两种展开/收缩条件下并行执行?
注意 ngIf 的使用。这是故意的,因为它会在动画序列结束时破坏元素。
这是我当前状态的一个小插曲: https://embed.plnkr.co/TXYoGf9QpErWmlRvQF9Z/
组件类:
export class App {
expanded = true;
toggleExpandedState() {
this.expanded = !this.expanded;
}
constructor() {
}
}
模板:
<div class="container" [@expansionTrigger]="expanded">
<div class="constant-item"></div>
<div class="fade-item" [@stateAnimation] *ngIf="expanded"></div>
</div>
<button (click)="toggleExpandedState()">Toggle Fade</button>
以及组件动画:
trigger('expansionTrigger', [
state('1', style({
width: '250px'
})),
state('0', style({
width: '160px'
})),
transition('0 => 1', animate('200ms ease-in')),
transition('1 => 0', animate('200ms ease-out'))
]),
trigger('stateAnimation', [
transition(':enter', [
style({
opacity: 0
}),
animate('200ms 350ms ease-in', style({
opacity: 1
}))
]),
transition(':leave', [
style({
opacity: 1
})
animate('1s', style({
opacity: 0
}))
])
])
【问题讨论】:
-
看起来像一个错误。我认为它可能与这个问题有关github.com/angular/angular/pull/6768
标签: angular typescript angular-ng-if