angular - 虚拟列表中的反应式表单行为不稳定
问题描述
我正在检查带有反应形式的虚拟滚动列表。场景是我有数千行显示在一个带有复选框的列表中以批准或反对。
所以在虚拟列表中我正在生成表单组[formGroupName]="i"
。
但是,如果我选中一个复选框,则在滚动它时也会随机选择并选中其他复选框。
这真的很奇怪。
要重现此问题,您可以一直向下滚动到最后一项并将其标记为取消选中,然后滚动回顶部并再次向下滚动。您将看到不稳定的行为,它将再次标记为已检查。点击中间或顶部的任何一个,其他的也会被随机检查。
解决方案
所以对我来说可能有两个已知的修复方法。
使用外部索引。在我的例子中,我在名为“index”的表单组内添加了一个新的表单控件,并将递增的值添加到每个表单组。然后我将其用作 [formGroupName]="item.controls.index.value" 并将其用作访问值的索引。
其他解决方法是使用 [formGroup]="item" 而不是 [formGroupName]="i"。该解决方案在 Angular Material 存储库中提供。
推荐阅读
- discord.js - BulkDelete Discord.js(如何添加整数解析)
- python - 我如何解决海龟,Python中的奇数问题
- kubernetes - 恐慌:获取 https://10.96.0.1:443/api/v1/namespaces/kubernetes-dashboard/secrets/kubernetes-dashboard-csrf:拨打 tcp 10.96.0.1:443:i/o 超时
- django - nginx 服务器:无法连接 128.0.0.1:8888
- javascript - 如何从复选框中获取布尔值?
- reactjs - Mui Tabs - 如何使用自定义图标
- java - 如何将值从 jar 文件传递到 Perl 脚本
- html - 如何移动
- 右边的子弹元素?
- javascript - 使用 Bootstrap 的 Node Express 无法触发按钮单击事件
- android - 在协程 GlobalScope 上运行 Room Persistence Library 查询