I have this class binding which should animate my image while loading, but it never trigger.
<img [class.animated]="loader.isLoading$ | async" src="...">
Loader :
public get isLoading$(): Observable<boolean> {
return this._isLoading$.pipe(
// If the data arrives successfully earlier than in 250ms, no indicator should be shown
switchMap(isLoading => isLoading ? of(true).pipe(delay(250)) : of(false))
);
}
Using vanilla javascript works (so I guess the Loader code is fine) :
ngAfterViewInit(): void {
this.loader.isLoading$.subscribe(
isLoading => {
const img = document.querySelector('img') as HTMLImageElement;
if (isLoading) {
img.classList.add('animated');
}
else {
img.classList.remove('animated');
}
}
);
}
edit : The class binding works without the delay(250)
, why ?
Where am I doing wrong with the class binding ? Even with ChangeDetectionStrategy.Default
it doesn't work.
Thanks for any explanation.