【发布时间】:2020-07-25 01:06:58
【问题描述】:
我有一个带有嵌套表单数组的反应式表单。效果很好,直到现在都没有问题。
contractForm = new FormGroup({
ContractNumber:new FormControl(''),
...
Items: this.fb.array([])
});
items 数组稍后会被填充。
当我尝试更改其中一个的值时,我的问题就出现了。以前从来没有真正遇到过问题。但是这个函数:
removeSerial(rowIndex, snIndex){
const itemsArray = this.contractForm.get('Items') as FormArray;
const serialArray = itemsArray.at(rowIndex).get('SerialNumbers') as FormArray;
serialArray.at(snIndex).get('STATUS').setValue('Inactive');
console.log(serialArray.at(snIndex).get('STATUS').value);
console.log(this.contractForm.value);
}
第一个 console.log 显示预期的“非活动”值。但是,当我打印表单的值时,该值不会改变。我在这里想念什么?如果重要,组件设置为“changeDetection:ChangeDetectionStrategy.OnPush”
【问题讨论】:
-
你能创建 stackblitz 吗?
-
如果我绝望了。需要一点时间才能重新创建足够的内容。仍然先玩...但是没有想法了。
-
在 consoe 之后尝试这个 serialArray.at(snIndex).get('STATUS').updateValueandValidity()
-
没有这样的运气。没有变化。
-
但是:serialArray.updateValueAndValidity() ;确实有效!成功!感谢您为我指明道路。
标签: angular angular-reactive-forms