Winkel 2 animieren *ngFor Punkt der Liste eine nach der anderen mit neuen Animation, die Unterstützung im RC-5
Ich habe eine Komponente, die holt Liste von Elementen vom server und zeigt dann, dass die Liste mit *ngFor im template.
Möchte ich die Liste angezeigt werden mit etwas animation, aber eins nach dem anderen. Ich meine, jeder Punkt der Liste sollte animieren, nach anderen.
Ich versuche, so etwas wie dieses:
import { Component, Input, trigger, state, animate, transition, style } from '@angular/core';
@Component({
selector: 'list-item',
template: ` <li @flyInOut="'in'">{{item}}</li>`,
animations: [
trigger('flyInOut', [
state('in', style({ transform: 'translateX(0)' })),
transition('void => *', [
style({ transform: 'translateX(-100%)' }),
animate(100)
]),
transition('* => void', [
animate(100, style({ transform: 'translateX(100%)' }))
])
])
]
})
export class ListItemComponent {
@Input() item: any;
}
und in meiner Liste component template ich benutze es gerne:
<ul>
<li *ngFor="let item of list;">
<list-item [item]="item"></list-item>
</li>
</ul>
Was es tut, ist, zeigt die gesamte Liste auf einmal. Ich möchte Elemente geben Sie nacheinander mit einigen animation.
- Genau dieses Verhalten erwartet, für mich ! Haben Sie eine Lösung finden ?
- Noch nicht, aber es scheint, dass mit dem neuen Animations-Modul im Winkel 2, es sollte nicht viel schwieriger jetzt. Wir können eine Komponente erstellen, die für Punkt der Liste und dann mit der animation für die auf betreten und verlassen. Check angular.io/docs/ts/latest/guide/animations.html
- Ich habe gesehen, danke ! Meine Lösung war, ein timeout zwischen jedem element für die animation, also alle LI-element eingibt, glatt mit einer animation
- Haben Sie einen Blick auf stackoverflow.com/questions/37880525/.... Atemberaubend ist noch nicht implementiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte ich nicht finden
stagger
Unterstützung aufngFor
in der Dokumentation, aberes gibt jetzt
animation.done
events
, die verwendet werden können, umstaggering ngFor
stateChangeExpression
- andere alsvoid => *
(:entry
) /* => void
(:leave
) für*ngFor
? Zum Beispiel definierentransition('in',...
undtransition('out',...
und in Vorlage verwenden[@flyInOut]="transition"
mit Bindung antransition
variable in der Komponenten-Klasse?. Ich Frage, weil*ngFor
macht DOM hinzufügen und entfernen und ich nicht erfolgreich zu erreichen, die mit benutzerdefinierten übergängen.Verwenden angular2 Animationen habe ich ein state-Eigenschaft der iterierten Element und dann einfach das setup eine toggle-Funktion für die mouseover-und mouseout-Funktionen. Auf diese Weise wird jedes Element gekapselt, es ist animiert Staat und dann könnte ich es ändern, wie gebraucht
slideInOut
sollflyInOut
in deinem Beispiel?was Sie wollen, von der Zeit, die zwischen jedes Element in der Liste finden Sie unter diesem code. ändern Sie die Datei .css .scss
wie diese https://codepen.io/jhenriquez856/pen/baPagq
CSS:
HTML: