Goal:加载具有动态源的图像。如果找不到图像,则加载占位符图像。
这应该说明了我正在尝试做什么,但是我不知道如何根据第一个img src是否有效来有条件地设置validImage。
<img *ngif="validImage" class="thumbnail-image" src="./app/assets/images/{{image.ID}}.jpg" alt="...">
<img *ngif="!validImage" class="thumbnail-image" src="./app/assets/images/placeholder.jpg" alt="...">如果src="./app/assets/images/{{image.ID}}.jpg"返回图像,则validImage应为true。否则,它将返回false,并且应该只显示第二个img标记。
有一些显而易见的工作,比如存储所有有效图像源的列表,但我认为有更好的方法来实现这一点。
任何关于在Angular2中实现这一点的最佳方式的建议都将不胜感激。
发布于 2016-03-16 11:50:22
处理断开的图像链接的最佳方法是对<img>标记使用onError事件:
<img class="thumbnail-image" src="./app/assets/images/{{image.ID}}.jpg"
onerror="this.src='./app/assets/images/placeholder.jpg';" alt="..." />发布于 2017-03-13 01:00:31
<img [src]="pic" (error)="setDefaultPic()">在组件类中的某个位置:
setDefaultPic() {
this.pic = "assets/images/my-image.png";
}发布于 2016-12-16 05:16:45
我也遇到了类似的需求。如果img url为空或返回错误(404等),我希望默认为1X1透明像素。
import { Directive, Input } from '@angular/core';
@Directive({
selector: 'img[src]',
host: {
'[src]': 'checkPath(src)',
'(error)': 'onError()'
}
})
export class DefaultImage {
@Input() src: string;
public defaultImg: string = '{YOUR_DEFAULT_IMG}';
public onError() {
this.src = this.defaultImg;
}
public checkPath(src) {
return src ? src : this.defaultImg;
}
}标记
<img [src]="{DESIRED_IMAGE_SOURCE}" />https://stackoverflow.com/questions/36026428
复制相似问题