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
复制相似问题