首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular2:如果img源无效,则显示占位符图像

Angular2:如果img源无效,则显示占位符图像
EN

Stack Overflow用户
提问于 2016-03-16 11:46:22
回答 8查看 73K关注 0票数 49

Goal:加载具有动态源的图像。如果找不到图像,则加载占位符图像。

这应该说明了我正在尝试做什么,但是我不知道如何根据第一个img src是否有效来有条件地设置validImage

代码语言:javascript
复制
<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中实现这一点的最佳方式的建议都将不胜感激。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-03-16 11:50:22

处理断开的图像链接的最佳方法是对<img>标记使用onError事件:

代码语言:javascript
复制
<img  class="thumbnail-image" src="./app/assets/images/{{image.ID}}.jpg"
      onerror="this.src='./app/assets/images/placeholder.jpg';"  alt="..." />
票数 156
EN

Stack Overflow用户

发布于 2017-03-13 01:00:31

代码语言:javascript
复制
<img [src]="pic" (error)="setDefaultPic()">

在组件类中的某个位置:

代码语言:javascript
复制
setDefaultPic() {
  this.pic = "assets/images/my-image.png";
}
票数 41
EN

Stack Overflow用户

发布于 2016-12-16 05:16:45

我也遇到了类似的需求。如果img url为空或返回错误(404等),我希望默认为1X1透明像素。

代码语言:javascript
复制
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;
    }
}

标记

代码语言:javascript
复制
<img [src]="{DESIRED_IMAGE_SOURCE}" />
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36026428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档