首先道歉我的英语。
尝试将数组字段添加到formGroup时遇到问题。
我正在尝试使用push方法将formArray添加到我的速率formGroup中,我认为该错误是由于formControlName引起的。
当我搜索并阅读问题所在时,但我无法解决它,有人可以帮我吗?
我创建了这个stackblitz,以便您可以看到它给我的错误。
答案 0 :(得分:1)
要使用FormArray,您需要了解以下内容:
Need form group
\/\/\/
<form [formGroup]="rates">
<input type="text" placeholder="credit_card" formControlName="credit_card" />
Need form array name
\/\/\/
<div formArrayName="servicesRates" *ngFor="let item of rates.get('servicesRates').controls; let i = index;">
<div [formGroupName]="i"> <-- this is important
<input type="text" placeholder="id" formControlName="id" />
<input type="text" placeholder="Servicio" formControlName="service" />
<input type="text" placeholder="Price" formControlName="price" />
</div>
</div>
</form>
要在HTML之上工作,您的TS必须为:
rates: FormGroup;
servicesRates: FormArray;
this.rates = this._formBuilder.group({
credit_card: [null, Validators.compose([Validators.required, Validators.minLength(8)])],
servicesRates: this._formBuilder.array([
this._formBuilder.group({
id: 0,
service: '',
price: 0,
})
])
});
和addNew函数:
addField() {
this.servicesRates = this.rates.get('servicesRates') as FormArray;
this.servicesRates.push(this.servicesRates);
}