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 重置值

Angular Reactive Forms,patchValue 不起作用,嵌套表单

Angular Reactive Forms vs ngModel,哪个性能更好? [关闭]

如何为Angular Reactive Forms创建自定义验证器

Angular 2 Reactive Forms 问题如何以角度方式而不是 jquery 方式进行

如何使用 Reactive Forms (Angular2 RC3) 进行异步验证?