Javascript 如何防止*ngFor在Angular 4中更新DOM?

Javascript 如何防止*ngFor在Angular 4中更新DOM?,javascript,angular,ngfor,Javascript,Angular,Ngfor,在angular 4中,我使用*ngFor来显示一些图像 <div *ngFor='let image of images;let i = index'> <img [src]="'/assets/Images/'+image+'.png'" *ngIf="!tohide(i,0);"> </div> 第一次完成*ngFor之后,我希望通过*ngIf删除特定的图像,而不更改数组“images”。问题是,每当我使用函数“tohide”删除图像时

在angular 4中,我使用*ngFor来显示一些图像

<div  *ngFor='let image of images;let i = index'>
    <img  [src]="'/assets/Images/'+image+'.png'" *ngIf="!tohide(i,0);">
</div>

第一次完成*ngFor之后,我希望通过*ngIf删除特定的图像,而不更改数组“images”。问题是,每当我使用函数“tohide”删除图像时,*ngFor会再次绑定到“图像”并更新图像集

换句话说,有没有办法强迫*ngFor不偶尔收听阵列“图像”


默认情况下,
*ngFor
有一个跟踪功能,在您的情况下,您希望覆盖它

<div  *ngFor='let image of images;let i = index; trackBy: myTrackByFunction'>
  <img  [src]="'/assets/Images/'+image+'.png'" *ngIf="!tohide(i,0);">
</div>

有关详细信息,默认情况下,

*ngFor
有一个跟踪功能,在您的情况下,您希望覆盖它

<div  *ngFor='let image of images;let i = index; trackBy: myTrackByFunction'>
  <img  [src]="'/assets/Images/'+image+'.png'" *ngIf="!tohide(i,0);">
</div>

有关详细信息,您可以使用以下方法来解决此问题:

  • 您可以通过添加名为
    removed
    的属性来跟踪每个图像对象的删除状态,该属性最初设置为false
  • 然后使用
    *ngFor
    实现一个过滤器(如上所述),以过滤掉图像
  • 删除图像时,请将
    removed
    标志设置为true。这将过滤掉删除的图像
  • 编辑:
    trackBy
    是*ng的另一个参数,您可以使用它来代替开发单独的过滤器。如果需要,过滤器将为您提供额外的控制和功能


    希望这有帮助

    您可以使用以下方法来解决此问题:

  • 您可以通过添加名为
    removed
    的属性来跟踪每个图像对象的删除状态,该属性最初设置为false
  • 然后使用
    *ngFor
    实现一个过滤器(如上所述),以过滤掉图像
  • 删除图像时,请将
    removed
    标志设置为true。这将过滤掉删除的图像
  • 编辑:
    trackBy
    是*ng的另一个参数,您可以使用它来代替开发单独的过滤器。如果需要,过滤器将为您提供额外的控制和功能


    希望这有帮助

    u可以在数组中指定另一个名为“removed”的属性:False,然后使用此属性:

    <div  *ngFor='let image of images;let i = index'>
    <img  [src]="'/assets/Images/'+image+'.png'" [hidden]="i.removed">
    
    
    


    每当你想删除一个项目而不从数组中真正删除它时,只需将“removed”属性设置为True。

    你可以在数组中指定另一个名为“removed”的属性:False,然后使用此属性:

    <div  *ngFor='let image of images;let i = index'>
    <img  [src]="'/assets/Images/'+image+'.png'" [hidden]="i.removed">
    
    
    


    每当你想删除一个项目而不从数组中真正删除它时,只需将“removed”属性设置为True。

    你的tohide()函数做什么?您可以发布same的代码吗?在呈现项目之前,您不能修改数组吗?tohide()函数中有什么?您应该修改数组,而不是创建新数组。如果需要,则将重新渲染阵列。你能把你的ts代码粘贴到这里吗?这样我就能更好地帮助你了。你的tohide()函数是做什么的?您可以发布same的代码吗?在呈现项目之前,您不能修改数组吗?tohide()函数中有什么?您应该修改数组,而不是创建新数组。如果需要,则将重新渲染阵列。你能把你的ts代码贴在这里吗?这样我就能更好地帮助你了。