我正在尝试修补一个值,以便我的输入像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>