我需要制作一个组件,其中包含一个包含大量行的表。
所有这些都适用于小数据。但如果项目数增长到 2000 或更多,它就会变得滞后。滚动,尤其是动画变得太慢。
我也尝试过设置trackBy函数为ngFor但在这种情况下它对性能没有影响。
请参见堆栈闪电战 https://stackblitz.com/edit/angular-t72ugv例子;
正如您所看到的,当您使用 100 个项目时,所有功能都完美,但在 2000 个项目上,它会冻结,而在 10,000 个项目上,则无法使用。
我想知道在 Angular 中显示包含大量数据的网格的正确方法是什么,以及如何提高此类页面的性能?
是否有一些延迟加载实现的示例,我可以通过仅可见行在 DOM 中以 html 形式呈现,并且除滚动之外的所有行都从 DOM 中删除的方式来实现吗?
任何想法将不胜感激。
UPDATE
我有最新版本的 Chrome 浏览器:版本 66.0.3359.181(官方版本)(64 位)。
我已经在不同的电脑、浏览器上进行了尝试:它仅在 chrome 中冻结(在 mac book 上的 chrome 中,它比在 PC 上运行得更好,但比在 safari 中运行更差,例如)。
正确的方法是当应用程序动态销毁元素时应用虚拟滚动方法,因为它们变得不可见。我知道 Angular 有两种解决方案:
-
Angular2 虚拟滚动 https://github.com/rintoj/angular2-virtual-scroll,目前最受欢迎,有一些有趣的分叉
-
ngx-ui-滚动 https://github.com/dhilt/ngx-ui-scroll,由我维护,有任何问题请随时提问
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)