Javascript [src]属性更改后,Angular 5未重新呈现img标记

Javascript [src]属性更改后,Angular 5未重新呈现img标记,javascript,html,angular,image,gif,Javascript,Html,Angular,Image,Gif,我正在用Angular 5构建一个reddit客户端应用程序,其中包含以下代码片段 <div class="post-image" *ngIf="!post.media && !post.is_self"> <img class="image" [src]="postImage()"> </div> 如您所见,img标记可以接收指向gif或常规图像文件的url。this.post变量是一个输入变量,每当用户选择一篇新文章时,该

我正在用Angular 5构建一个reddit客户端应用程序,其中包含以下代码片段

  <div class="post-image" *ngIf="!post.media && !post.is_self">
    <img class="image" [src]="postImage()">
  </div>
如您所见,
img
标记可以接收指向gif或常规图像文件的url。
this.post
变量是一个输入变量,每当用户选择一篇新文章时,该变量都会发生变化

现在的问题是,每当我在显示常规图像文件的两篇文章之间切换时,图像标记都会很好地重新渲染,但当我在显示
.gif
文件的两篇文章之间切换时,图像标记将不会重新渲染,它将继续显示以前的
.gif

现在,我已经检查了渲染的代码,查看图像
src
值在这种情况下是否实际发生了更改,并且图像
src
值确实发生了更改,但是
.gif
不会重新渲染。标题和呈现文章的组件中的所有其他内容都将更新,图像标记除外。我不知道是什么导致了这个问题


编辑:我认为添加比我在Electron.js中运行此应用程序更有帮助,也许这与问题有关。

我认为可能是缓存浏览器 你可以这样做

 postImage(): string {
    return this.post.preview.images[0].variants.gif
      ? this.post.preview.images[0].variants.gif.source.url + '&date=' + new Date().getTime();
      : this.post.preview.images[0].source.url + '&date=' + new Date().getTime();
  }

我想rerender取决于相关属性,所以我需要您尝试类似于
this.imgsrc=this.positmage()
的东西,我认为您应该使用“?date=”+new date().getTime();而不是“&date=”+new date().getTime();
 postImage(): string {
    return this.post.preview.images[0].variants.gif
      ? this.post.preview.images[0].variants.gif.source.url + '&date=' + new Date().getTime();
      : this.post.preview.images[0].source.url + '&date=' + new Date().getTime();
  }