Angular 从角度为9的FormArray中获取指定值
我有一个FormGroup,它有一个FormArray元素:Angular 从角度为9的FormArray中获取指定值,angular,formarray,Angular,Formarray,我有一个FormGroup,它有一个FormArray元素: this.addForm = new FormGroup({ id: new FormControl(''), user_id: new FormControl(3), client_id: new FormControl('', Validators.required), type: new FormControl('', Validators.required), description: new FormCo
this.addForm = new FormGroup({
id: new FormControl(''),
user_id: new FormControl(3),
client_id: new FormControl('', Validators.required),
type: new FormControl('', Validators.required),
description: new FormControl(''),
payment_ref: new FormControl(''),
registration_date: new FormControl(''),
status: new FormControl('', Validators.required),
sale_date: new FormControl(''),
payment_date: new FormControl(''),
total_price: new FormControl(''),
services: new FormArray([
new FormGroup({
service_id: new FormControl('', Validators.required),
description: new FormControl('', Validators.required),
unit: new FormControl('', Validators.required),
price: new FormControl(''),
quantity: new FormControl(''),
total_price: new FormControl(''),
}),
])
});
在GUI中,我可以通过单击按钮添加新的FormArray。
GUI如下所示:
当我在“选择服务”部分中选择服务时,说明和价格应自动填入数据。
此部件的代码如下所示:
getSelectedService(event,index){
console.log(event.value);
this.http.get("http://localhost/finance/server/public/api/v1/service" + '/' + event.value)
.toPromise().then(data =>
{
//console.log(data);
this.getSelectedServiceData = data;
// console.log(this.getSelectedServiceData.service);
//console.log(this.addForm.get('services'));
this.addForm.get('services').patchValue([this.getSelectedServiceData.service]);
console.log(this.addForm.get('services').value);
});
}
问题是,当我添加另一行并尝试从选择框中选择服务时,说明和价格会发生变化,但第一行的说明和价格不会发生变化,而不是指定行的说明和价格。
有什么帮助吗?如果要访问formarray中的数据,需要使用以下语句:
(this.addForm.services as FormArray).controls[0].value
现在您需要将此值修补到新添加的formarray中您可以为您的问题创建stackblitz吗?@PrincesInnija我从Laravel获得数据,我认为我无法进行堆栈blitz,而且项目很复杂。如果您想访问formarray中的数据,您需要使用(this.addForm.services as formarray)。控件[0].value在此之后,您需要将此值修补到新添加的formarray