S'il n'existe pas d'image sur un serveur distinct, j'aimerais afficher une image par défaut. Existe-t-il une directive angulaire pour accomplir cela?
Non, mais vous pouvez en créer un.
HTML:
<img fallback-src="http://google.com/favicon.ico" ng-src="{{image}}"/>
JS:
myApp.directive('fallbackSrc', function () {
var fallbackSrc = {
link: function postLink(scope, iElement, iAttrs) {
iElement.bind('error', function() {
angular.element(this).attr("src", iAttrs.fallbackSrc);
});
}
}
return fallbackSrc;
});
Y a-t-il une directive angulaire ...
http://ngmodules.org/modules/angular-img-fallback
Github: https://github.com/dcohenb/angular-img-fallback
(32 étoiles à partir de maintenant)
J'ai écrit ma propre bibliothèque de repli.
Une image de repli angulaire assez simple et directe, lib:
https://github.com/alvarojoao/angular-image-fallback
Utilitaire permettant de charger des images et de gérer les erreurs d'image, dispose d'un support d'image pour gérer les erreurs de chargement d'image et de chargement d'image pour les espaces réservés de chargement des images
http://alvarojoao.github.io/angular-image-fallback
Ajoutez simplement l'attribut d'image à vos balises <img />
<img image="{{'path/to/img.jpg'}}" />
Make _ {sure vous n'utilisez pas ng-src
comme attribut de votre image src
.
<img image="{{image.url}}" image-loading="/image/loading.gif"
image-holder="/image/error.png" />
Angualr 2 Version
https://github.com/VadimDez/ng2-img-fallback
HTML
<img fallback-src="http://google.com/favicon.ico" src="http://google.com/failedImage.png"/>
Composant angulaire 2
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: '[fallback-src]'
})
export class FallbackSrc {
@Input('fallback-src') imgSrc: string;
private el: HTMLElement;
private isApplied: boolean = false;
private EVENT_TYPE: string = 'error';
constructor(el: ElementRef) {
this.el = el.nativeElement;
this.el.addEventListener(this.EVENT_TYPE, this.onError.bind(this))
}
private onError() {
this.removeEvents();
if (!this.isApplied) {
this.isApplied = true;
this.el.setAttribute('src', this.imgSrc);
}
}
private removeEvents() {
this.el.removeEventListener(this.EVENT_TYPE, this.onError);
}
ngOnDestroy() {
this.removeEvents();
}
}