Angular异步管道对图像源更新无效。
创始人
2024-10-30 12:00:13
0

问题描述: 在Angular应用中,使用异步管道来加载图像源时,图像源的更新可能无效。

解决方法:

  1. 使用管道的纯函数版本: 在管道中使用纯函数版本,确保输入和输出的值都是不可变的。这样即使图像源发生变化,管道也会正确地更新。
@Pipe({
  name: 'asyncImage'
})
export class AsyncImagePipe implements PipeTransform {
  transform(source: string | null): SafeUrl | null {
    return source ? this.sanitizer.bypassSecurityTrustUrl(source) : null;
  }
}
  1. 使用管道的非纯函数版本: 如果管道中的变量不是不可变的,可以使用管道的非纯函数版本。这样,每次检测时都会重新计算管道的输出值。
@Pipe({
  name: 'asyncImage',
  pure: false
})
export class AsyncImagePipe implements PipeTransform, OnDestroy {
  private sourceSubscription: Subscription | null = null;
  private latestSource: string | null = null;
  private latestSafeUrl: SafeUrl | null = null;

  constructor(private sanitizer: DomSanitizer) {}

  transform(source: string | null): SafeUrl | null {
    if (source !== this.latestSource) {
      this.latestSource = source;
      if (this.sourceSubscription) {
        this.sourceSubscription.unsubscribe();
        this.sourceSubscription = null;
      }
      this.latestSafeUrl = null;
      if (source) {
        this.sourceSubscription = this.loadImage(source).subscribe(url => {
          this.latestSafeUrl = this.sanitizer.bypassSecurityTrustUrl(url);
        });
      }
    }
    return this.latestSafeUrl;
  }

  ngOnDestroy() {
    if (this.sourceSubscription) {
      this.sourceSubscription.unsubscribe();
    }
  }

  private loadImage(source: string): Observable {
    return new Observable(observer => {
      const image = new Image();
      image.onload = () => {
        observer.next(source);
        observer.complete();
      };
      image.src = source;
    });
  }
}

这两种方法都可以解决Angular异步管道在图像源更新时无效的问题。具体使用哪一种方法取决于你的应用需求和具体情况。

相关内容

热门资讯

热点推荐!wejoker辅助器... 热点推荐!wejoker辅助器可以卖,新道游戏辅助器安装包,必赢方法(有挂解密)-哔哩哔哩1、金币登...
每日必看!wepoker开脚本... 每日必看!wepoker开脚本视频,禅游辅助,专业教程(有挂技术)-哔哩哔哩1、超多福利:超高返利,...
盘点一款!hhpoker可以开... 盘点一款!hhpoker可以开透视,混沌休闲辅助,曝光教程(有挂技巧)-哔哩哔哩运hhpoker可以...
一分钟揭秘!pokerworl... 一分钟揭秘!pokerworld破解版下载,微乐自建房脚本免费下载,规律教程(有挂教程)-哔哩哔哩1...
传递经验!wepoker透视脚... 传递经验!wepoker透视脚本免费app,手游辅助软件,透明教程(有挂方法)-哔哩哔哩1、进入到w...
来一盘!hhpoker辅助靠谱... 来一盘!hhpoker辅助靠谱,pokemmo内置修改器,解说技巧(了解有挂)-哔哩哔哩1、每一步都...
重大通报!德州透视插件,新九哥... 重大通报!德州透视插件,新九哥破解版,解密教程(有挂技术)-哔哩哔哩1、超多福利:超高返利,海量正版...
揭秘!wpk插件辅助,一起宁德... 揭秘!wpk插件辅助,一起宁德钓蟹黑科技辅助软件推荐,介绍教程(有挂存在)-哔哩哔哩1、点击下载安装...
玩家必备攻略!扑克之星辅助,西... 玩家必备攻略!扑克之星辅助,西兵互娱辅助多少钱,黑科技教程(有人有挂)-哔哩哔哩1、该软件可以轻松地...
玩家必看教程!hhpoker软... 玩家必看教程!hhpoker软件安装包,张同学俱乐部有挂,可靠教程(有挂方式)-哔哩哔哩在进入张同学...