在生成动态表单字段时删除行始终删除最后一个索引
Deleting rows while generating dynamic form fields deleting always the last index
我创建了一个动态表单字段应用程序,可以在其中动态添加或删除行。一切正常,但是当我尝试删除大于等于 3 的行时,总是删除最后一行。
我尝试调试该应用程序,它收到了正确的删除索引,但它仍然总是删除最后一行。
如下图所示,有 3 行,我试图删除索引为 1 的行,但索引为 2 的行仍然被删除。
感谢任何指导。提前致谢
TrackBy
(双关语!)
你走在正确的轨道上
在某些情况下,从中返回 index
就足够了,有时则不够,就像在这种情况下一样。因此,建议实际跟踪每个项目完全独特的东西,因为我们知道索引在 ngFor 中确实会发生变化。
由于您目前没有任何足够独特的东西,我们可以添加一个额外的字段,因此当您将新项目推送到 formarray 时,我们可以添加一个 Date
字段,该字段将始终是独特。当然提交表单的时候需要过滤掉Date,不过问题不大。
所以我推荐如下:
newDynamics(): FormGroup {
return this.fb.group({
field: '',
operator: '',
value:'',
andOr:'',
date: new Date() // add an unique identifier
})
}
然后是 trackby:
trackByFn(index, item) {
return item.date; // always unique!
}
任何唯一标识符都可以,例如,您可以为每个表单组推送一个 ID。以上只是一种选择。
我创建了一个动态表单字段应用程序,可以在其中动态添加或删除行。一切正常,但是当我尝试删除大于等于 3 的行时,总是删除最后一行。
我尝试调试该应用程序,它收到了正确的删除索引,但它仍然总是删除最后一行。
如下图所示,有 3 行,我试图删除索引为 1 的行,但索引为 2 的行仍然被删除。
感谢任何指导。提前致谢
TrackBy
(双关语!)
在某些情况下,从中返回 index
就足够了,有时则不够,就像在这种情况下一样。因此,建议实际跟踪每个项目完全独特的东西,因为我们知道索引在 ngFor 中确实会发生变化。
由于您目前没有任何足够独特的东西,我们可以添加一个额外的字段,因此当您将新项目推送到 formarray 时,我们可以添加一个 Date
字段,该字段将始终是独特。当然提交表单的时候需要过滤掉Date,不过问题不大。
所以我推荐如下:
newDynamics(): FormGroup {
return this.fb.group({
field: '',
operator: '',
value:'',
andOr:'',
date: new Date() // add an unique identifier
})
}
然后是 trackby:
trackByFn(index, item) {
return item.date; // always unique!
}
任何唯一标识符都可以,例如,您可以为每个表单组推送一个 ID。以上只是一种选择。