I want to modify an animation I have. Currently it's set to this:
animations: [
trigger('crossFade', [
transition(':enter', [
style({ opacity: 0 }), //<--state before enter animation begins
animate('1000ms', style({ opacity: 1 })), //<--animate to get opacity 1 in 1000ms
]),
transition(':leave', [animate('1000ms', style({ opacity: 0 }))]), //<--animate to get opacity 0 in 1000ms
]),
],
As you can see, it starts when the component is added to the DOM (:enter) and then when the component is removed from the DOM (:leave)
My HTML looks like this:
<div class="background-image" situ-background-image [publicId]="section.backgroundImage.publicId"
*ngIf="section.backgroundImage.publicId && !backgroundImage?.publicId" [@crossFade]>
</div>
<div class="background-image" situ-background-image [publicId]="backgroundImage.publicId"
*ngIf="backgroundImage?.publicId" [@crossFade]>
</div>
This works fine when the image is removed from the DOM, but not when the image first loads and this is because the image hasn't actually loaded yet. So I changed my html to this:
<div class="background-image" situ-background-image [publicId]="section.backgroundImage.publicId"
[class.loaded]="loaded[section.backgroundImage.publicId]"
(onLoaded)="loaded[section.backgroundImage.publicId] = true"
*ngIf="section.backgroundImage.publicId && !backgroundImage?.publicId" [@crossFade]>
</div>
<div class="background-image" situ-background-image [publicId]="backgroundImage.publicId"
[class.loaded]="loaded[backgroundImage.publicId]" (onLoaded)="loaded[backgroundImage.publicId] = true"
*ngIf="backgroundImage?.publicId" [@crossFade]>
</div>
As you can see, I add a loaded class to the element when the image has loaded. Once this class has been applied, that is when I want the animation to fire. The leave animation is fine.
Does anyone know how I can do that?