我正在尝试通过2个嵌套ngFor显示2d数组
<div class="row" *ngIf="!calculating" style="margin: auto;">
<div class="col-xs-12 col-sm-12 col-md-12 col-sm-offset-1 col-md-offset-2">
<div class="row" *ngFor="let pixelRow of pixels" style="width: max-content;">
<div class="col pixel"
*ngFor="let pixel of pixelRow"
[ngStyle]="{'background-color': pixel.Color }"
(click)="changePixelState(pixel.xIndex, pixel.yIndex)"></div>
</div>
</div>
</div>
基本上,它在正常数据范围内可以正常工作,但是当将其定义为1000X1000时-需要花费大量时间才能显示,同时页面没有响应。我曾尝试使用cdk-virtual-scroll-viewport,但找不到关于如何在2d阵列上使用它的任何文档,仅在一个数据列表上。
我该怎么办?有任何想法吗?
1-在每个对象中为ID或Guid注入一个唯一的标识符
2-在您的teackBy方法中使用唯一标识符
3-在您的模板html中绑定trackBy方法
<ul>
<li *ngFor="let item of collection;trackBy: trackByFn">{{item.id}}</li>
</ul>
4-在您的ts文件中
trackByFn(index, item) { return item.id;}
现在,当您更改集合时,Angular可以根据唯一标识符跟踪已添加或删除的项目,并仅创建或销毁已更改的项目。