【问题标题】:Angular 9 Reactive Form failing to update valueAngular 9 Reactive Form 无法更新值
【发布时间】: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


【解决方案1】:

解决方案是添加 serialArray.updateValueAndValidity();感谢 Chellappan 让我到达那里。

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多