Angular PatchValue 不适用于 FormArray

Angular PatchValue is not working with FormArray

我正在尝试修补一个值,以便我的输入像 ng 模型一样工作

这是代码

 this.purchaseOrderForm.patchValue({
      itemForm: {
        inputSubTotal: this.tempSellPrice.valueOf().toString()
      }

    });

但是没用

 this.purchaseOrderForm.at(i).patchValue({
      itemForm: {
        inputSubTotal: this.tempSellPrice.valueOf().toString()
      }

    });

也不起作用,i = 索引计数。

有没有办法在不保存的情况下更新我的表单?

不幸的是,您不能直接在表单数组上修补或设置值,您需要修补或设置其中的表单组/控件的值,如下所示:

  onChangeState(i){
    const fg = this.itemsArray.at(i);
    const fgValue = fg.value;
    fg.patchValue({
      total: fgValue.fvalue + fgValue.svalue
    });
  }

这是一个闪电战演示:https://stackblitz.com/edit/angular-wyly3s?file=src/app/app.component.ts

在不知道你正在使用的表单的真实结构的情况下,我不能说出你的问题代码中到底有什么问题

我在此处查看了您的 StackBlitz 示例 https://stackblitz.com/edit/angular-c6xqxm,我想我发现了问题所在。您必须将 [formGroupName]="1" 嵌套在 *ngFor

的子元素中

而不是

<div *ngFor="let group of itemsArray.controls; let i = index;" [formGroupName]="i"> 

    //your code...      

</div>

尝试

<div *ngFor="let group of itemsArray.controls; let i = index;" >
  <div [formGroupName]="i"> <----------

    //your code...

  </div>
</div>