Utwórz komponent, który pokazuje obraz zastępczy, do momentu załadowania żądanego obrazu, i ukrywa żądany obraz. Po załadowaniu obrazu ukrywasz symbol zastępczy i wyświetlasz obraz.
@Component({
selector: 'image-loader',
template: `<img *ngIf="!loaded" src="url-to-your-placeholder"/>
<img [hidden]="!loaded" (load)="loaded = true" [src]="src"/>`
})
export class ImageLoader {
@Input() src;
}
Zobacz działa w Plunker.
Aktualizacja
Teraz rozumiem wymogi lepiej, oto rozwiązanie z obrazu tła. Jest trochę odlotowy i bardzo lubię ten oryginalny ...
@Directive({
selector: '[imageLoader]'
})
export class ImageLoader {
@Input() imageLoader;
constructor(private el:ElementRef) {
this.el = el.nativeElement;
this.el.style.backgroundImage = "url(http://smallenvelop.com/demo/image-loading/spinner.gif)";
}
ngOnInit() {
let image = new Image();
image.addEventListener('load',() => {
this.el.style.backgroundImage = `url(${this.imageLoader})`;
});
image.src = this.imageLoader;
}
}
Updated plunker.
Możliwy duplikat [Ionic 2: (Łazy) Ładowanie spinner do zdjęć] (http://stackoverflow.com/ pytania/38846271/ionic-2-lazy-loading-spinner-for-pictures) –