typescript - Angular animation: först fadeout, sedan fadeIn
Jag har följande HTML
<div @fadeInOut *ngIf="state">State is true</div>
<div @fadeInOut *ngIf="!state">State is false</div>
<button (click)="state = !state">Toggle</button>
Och jag vill animera :leave och :enter övergången. Väldigt trivialt skulle jag säga
Jag kan göra detta med följande animation
trigger("fadeInOut", [
transition(":enter", [
style({ opacity: 0 }),
animate(1000, style({ opacity: 1 }))
]),
transition(":leave", [animate(1000, style({ opacity: 0 }))])
])
Men problemet är att så snart övergången börjar är båda elementen synliga. Vad jag vill är att först försvinner :leave, och sedan dyker :enter upp. Vad är det korrekta sättet att uppnå detta?
Svar #1
Du kan uppnå det genom att lägga till en fördröjning för :enter-animationen lika lång som :leave-animationen
trigger("fadeInOut", [
transition(":enter", [
style({ opacity: 0 }),
animate("1000ms 1000ms", style({ opacity: 1 }))
]),
transition(":leave", [animate(1000, style({ opacity: 0 }))])
])
Referens: https://angular.io/api/animations/animate
