एक घटक बनाएं जो प्लेसहोल्डर छवि को तब तक दिखाता है जब तक अनुरोधित छवि लोड नहीं हो जाती है, और अनुरोधित छवि को छुपाता है। एक बार छवि लोड होने के बाद, आप प्लेसहोल्डर को छुपाएं और छवि दिखाएं।
@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;
}
इसे Plunker में काम करना देखें।
अद्यतन
अब जब कि मैं आवश्यकताओं को बेहतर समझते हैं, यहाँ पृष्ठभूमि छवि के साथ एक समाधान है। यह थोड़ा हैकी है, और मुझे मूल एक बेहतर पसंद है ...
@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।
की संभावित डुप्लिकेट [आयोनिक 2: (Lazy) चित्रों के लिए स्पिनर लोड हो रहा है] (http://stackoverflow.com/
यहाँ मेरी समाधान है प्रश्न/38846271/आयनिक -2-आलसी-लोडिंग-स्पिनर-फॉर-पिक्चर्स) –