首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular7:有没有办法限制同一页面上多个相同组件的作用域?

Angular7:有没有办法限制同一页面上多个相同组件的作用域?
EN

Stack Overflow用户
提问于 2019-03-29 10:07:15
回答 1查看 204关注 0票数 1

我在一个页面上放置了多个相同组件,它们都在接收输入。当这些输入中的一个发生变化时,它们都会刷新!有没有办法不让它全部刷新呢?

代码语言:javascript
复制
<tr *ngFor="let map of imgs | keyvalue; index as i;">
    <td><app-preview [file]="map.value"></app-preview></td>
</tr>

组件:

代码语言:javascript
复制
<img *ngIf="src" [src]="src" alt="">

应该向组件发送不同的映射值,但是当一个映射值更改时,所有组件都会刷新,这看起来非常糟糕。

EN

回答 1

Stack Overflow用户

发布于 2019-03-29 10:50:34

这就是我们应该使用trackedBy函数的场景。

如下所示修改您的代码。

在你的html中,

代码语言:javascript
复制
<tr *ngFor="let map of imgs | keyvalue; index as i; trackBy: trackByFn">
    <td><app-preview [file]="map.value"></app-preview></td>
</tr>

在你的ts文件中

代码语言:javascript
复制
public trackByFn(index, item) {
    if(!item) return null;
    return index;
}

当你的列表更新时,这将避免在dom中重新呈现整个列表。默认的trackBy是使用对象的引用来完成的,并将其更改为trackBy列表的索引,这样整个dom就不会得到更新。所以..。将增强您的性能

有关更多信息,请查看this

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55409537

复制
相关文章

相似问题

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