获取 formArray Angular 中的值:找不到带路径的控件
Get values in formArray Angular: Cannot find control with path
我想在 formArray 中获取我的简单表单上的值,但它给我错误。我已经尝试过其他解决方案,例如 ,但它不起作用。
这是我的示例代码:https://stackblitz.com/edit/angular-get-array-values
----- HTML
<div class="form-group" formArrayName="optionGroup">
<div *ngFor="let data of menuOptions; let i = index">
<div [formGroupName]="i" class=" " id="{{i}}">
<input
formControlName="optionsQty"
class="form-input qty qty{{i}}"
type="number"
id="qty{{i}}"
min="1"
[(ngModel)]="defaultOptionQtyTotal"
/>
<input
formControlName="optionsName"
class="form-input"
type="text"
readonly
value=" {{data.name}} {{i}}"
id="optName{{i}}"
/>
$<input
formControlName="optionsCost"
class="form-input"
type="text"
readonly
value=" {{data.cost}}"
id="optName{{i}}"
/>
</div>
</div>
这是.TS
----- TS
constructor(private builder: FormBuilder) {
this.form = this.builder.group({
qtyTotal: this.builder.control("", [
Validators.required,
Validators.min(1)
]),
optionGroup: this.builder.array([]);
});
} //end constructor
您可以在 class 中初始化表单数组。
ngOnInit() {
this.initFormArray();
}
initFormArray() {
this.menuOptions.forEach(x => {
(<FormArray>this.form.get("optionGroup")).push(
this.builder.group({
optionsQty: [null],
optionsName: [x.name],
optionsCost: [x.cost]
})
);
});
}
您遇到了问题,因为您尝试访问 HTML 中的空表单数组。
已更新solution.
我想在 formArray 中获取我的简单表单上的值,但它给我错误。我已经尝试过其他解决方案,例如
这是我的示例代码:https://stackblitz.com/edit/angular-get-array-values
----- HTML
<div class="form-group" formArrayName="optionGroup">
<div *ngFor="let data of menuOptions; let i = index">
<div [formGroupName]="i" class=" " id="{{i}}">
<input
formControlName="optionsQty"
class="form-input qty qty{{i}}"
type="number"
id="qty{{i}}"
min="1"
[(ngModel)]="defaultOptionQtyTotal"
/>
<input
formControlName="optionsName"
class="form-input"
type="text"
readonly
value=" {{data.name}} {{i}}"
id="optName{{i}}"
/>
$<input
formControlName="optionsCost"
class="form-input"
type="text"
readonly
value=" {{data.cost}}"
id="optName{{i}}"
/>
</div>
</div>
这是.TS
----- TS
constructor(private builder: FormBuilder) {
this.form = this.builder.group({
qtyTotal: this.builder.control("", [
Validators.required,
Validators.min(1)
]),
optionGroup: this.builder.array([]);
});
} //end constructor
您可以在 class 中初始化表单数组。
ngOnInit() {
this.initFormArray();
}
initFormArray() {
this.menuOptions.forEach(x => {
(<FormArray>this.form.get("optionGroup")).push(
this.builder.group({
optionsQty: [null],
optionsName: [x.name],
optionsCost: [x.cost]
})
);
});
}
您遇到了问题,因为您尝试访问 HTML 中的空表单数组。
已更新solution.