Angular PatchValue 不适用于 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

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

我 https://stackblitz.com/edit/angular-c6xqxm 在这里看了你的 StackBlitz 示例,我想我发现了这个问题。您必须将 [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>

相关内容

  • 没有找到相关文章

最新更新