为数据创建服务后,动画便停止工作。看起来是因为最初加载页面时ng-repeat中没有任何元素(因为它正在获取数据)。似乎与THIS和THIS类似:
错误:
ERROR Error: Unable to process animations due to the following failed trigger transitions @listAnimation has failed due to:
- `query(":enter")` returned zero elements. (Use `query(":enter", { optional: true })` if you wish to allow this.)
动画片:
trigger('listAnimation', [
transition('* => *', [
query(':enter', style({ opacity: 0}), { optional: true }),
query(':enter', stagger('150ms', [
animate('.5s ease-in', keyframes([
style({ opacity: 0, /*transform: 'translateY(-75px)',*/ offest: 0}),
style({ opacity: .5, /*transform: 'translateY(35px)',*/ offest: .3}),
style({ opacity: 1, /*transform: 'translateY(0px)',*/ offest: 1})
]))
]))
])
])
HTML:
<div [@listAnimation]>
<div *ngFor="let member of members" class="member-card">
member info goes here...
</div>
</div>
现在,在您说
"put in { optional: true } like the error message says"
之前...我做到了-它消除了错误消息,但实际上并没有使动画起作用:trigger('listAnimation', [
transition('* => *', [
query(':enter', style({ opacity: 0}), { optional: true }),
query(':enter', stagger('150ms', [
animate('.5s ease-in', keyframes([
style({ opacity: 0, /*transform: 'translateY(-75px)',*/ offest: 0}),
style({ opacity: .5, /*transform: 'translateY(35px)',*/ offest: .3}),
style({ opacity: 1, /*transform: 'translateY(0px)',*/ offest: 1})
]))
]), {optional: true})
])
])
请记住,所有这些操作在将数据从应用程序组件中删除之前都是可行的。数据在那里,应用程序正常运行,只是此动画不再起作用。
最佳答案
确保仅当members数组不为空时才显示列表容器。这样,仅当列表中有内容时,动画才会触发。
<div [@listAnimation] *ngIf="members.length > 0">
<div *ngFor="let member of members" class="member-card">
member info goes here...
</div>
</div>
关于angular - 无法处理动画-返回零元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46352514/