Angular 9 Reactive Forms:使用 trackBy 时复选框未更新
Posted
技术标签:
【中文标题】Angular 9 Reactive Forms:使用 trackBy 时复选框未更新【英文标题】:Angular 9 Reactive Forms: checkbox not getting updated when using trackBy 【发布时间】:2020-12-24 17:07:47 【问题描述】:我正在使用响应式表单构建产品表单。
当我选中所有复选框并单击重置时,复选框不会更新**
当我删除 trackBy 时它工作正常,我怎样才能使用 ngFor trackBy
进行这项工作?
这里是示例:stackblitz Products Form
【问题讨论】:
【参考方案1】:这是因为您在trackBy
函数中返回索引,trackBy
函数的第一个参数是项目的索引,第二个是您希望返回第二个参数的项目本身。
在您的示例中,它看起来像。
P.S 我用通用名称重命名了 trackBy 函数。
trackByFn(_, item)
return item;
我把你的stackblitz 分叉了,你也可以看看。
【讨论】:
【参考方案2】:这是因为你的trackByFn
函数不正确。
trackBy
函数将 index 和 当前项 作为参数 并且需要返回此项的唯一标识符。
那么,试试这个:
trackByFn(index, item)
return index;
您可以在Stackblitz 上查看已修复的错误版本。
【讨论】:
以上是关于Angular 9 Reactive Forms:使用 trackBy 时复选框未更新的主要内容,如果未能解决你的问题,请参考以下文章
Angular Reactive Forms,patchValue 不起作用,嵌套表单
Angular Reactive Forms vs ngModel,哪个性能更好? [关闭]
如何为Angular Reactive Forms创建自定义验证器