6

I am trying to stagger an animation in my app with a dynamic list. I would like to animation enter and leave if possible but would settle just to get the on enter to work.

animations: [
    trigger('slideIn', [
        transition(':enter', [
            style({
                transform: 'translate3d(0,-10px,0)',
                opacity: 0
            }),
            animate('0.1s', style({
                transform: 'translate3d(0,0,0)',
                opacity: 1
            }))
        ])
    ])  
  ]

Above is the animation code that I cannot get to run and below is how I implemented it into the template.

<ion-content [@listAnimation]="eventsList?.length">
    <ion-list>
              <event-item *ngFor="let item of eventsList" [item]="item"></event-item>
    </ion-list>
     <empty-list [list]="eventsList" [message]="'There are no event items to display.'"></empty-list>
    <ion-infinite-scroll [enabled]="infiniteScroll === null" (ionInfinite)="doInfinite($event)">
        <ion-infinite-scroll-content></ion-infinite-scroll-content>
     </ion-infinite-scroll>
</ion-content>

Please let me know where I have gone wrong.

Claies
  • 22,124
  • 4
  • 53
  • 77
Ross Rawlins
  • 603
  • 8
  • 22

2 Answers2

3

Haven't done any animations myself yet, but according to : https://www.yearofmoo.com/2017/06/new-wave-of-animation-features.html#space-things-out-with-stagger

Your code should look like this instead:

animations: [
trigger('listAnimation', [
   transition('* => *', [
   // remember that :enter is a special
   // selector that will return each
   // newly inserted node in the ngFor list
   query(':enter', [
        style({
            transform: 'translate3d(0,-10px,0)',
            opacity: 0
        }),
        animate('0.1s', style({
            transform: 'translate3d(0,0,0)',
            opacity: 1
        }))
    ])
])  
]

That is adding a query level to what you already got

Bulan
  • 673
  • 1
  • 9
  • 24
-1

I realised what the issue is/was. The animation wont run on when a for loop is bound directly on the the component you have to set it to a parent div then it works perfectly/

Ross Rawlins
  • 603
  • 8
  • 22