【发布时间】:2020-07-23 02:15:19
【问题描述】:
我想根据来自 API 的响应添加具有值的动态表单数组控件。如果有 1 条记录,则为 1 行,如果有 2 条,则为 2 行,依此类推。
表格:
this.VendorForm = this.formBuilder.group({
vendorId: [null],
vendorName: ['', [Validators.pattern(/^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$/), Validators.required]],
vendorType: ['', Validators.required],
correspondingAddressDetail: this.formBuilder.group({
correspondingAddress: ['', Validators.required],
correspondingState: ['', [Validators.required, Validators.pattern(/^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$/)]],
correspondingPincode: ['', [Validators.required, Validators.pattern(/^\d{3}\d{3}$/)]],
correspondingCity: ['', Validators.required],
correspondingDistrict: ['', Validators.required],
correspondingPostoffice: ['', Validators.required]
}),
billingAddressDetail: this.formBuilder.group({
sameAddress: [false],
billingAddress: ['', Validators.required],
billingState: ['', [Validators.required, Validators.pattern(/^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$/)]],
billingPincode: ['', [Validators.required, Validators.pattern(/^\d{3}\d{3}$/)]],
billingCity: ['', Validators.required],
billingDistrict: ['', Validators.required],
billingPostoffice: ['', Validators.required]
}),
phoneNo: ['', [Validators.required, Validators.pattern(/^[1-9]\d{9}$/)]],
email: ['', Validators.pattern(/^(\D)+(\w)*((\.(\w)+)?)+@(\D)+(\w)*((\.(\D)+(\w)*)+)?(\.)[a-z]{2,}$/)],
contactPersonNo: ['', [Validators.required, Validators.pattern(/^[1-9]\d{9}$/)]],
contactPersonName: ['', [Validators.required, Validators.pattern(/^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$/)]],
contactPersonEmail: ['', Validators.pattern(/^(\D)+(\w)*((\.(\w)+)?)+@(\D)+(\w)*((\.(\D)+(\w)*)+)?(\.)[a-z]{2,}$/)],
statutoryInfo: this.formBuilder.array([this.formBuilder.group({
statutoryName: ['', Validators.required],
info: ['', Validators.required]
})]),
isActive: [true],
remarks: ['']
});
修补值:
this.dialogData.statutoryInfo.forEach(x => {
this.statutoryInfo.push(this.formBuilder.group({
statutoryName: [x.statutoryName],
info: [x.info]
}))
});
来自 API 响应的 legalInfo 值:
(2)[{…}, {…}]
0:{statutoryName: 6, info: '123456987'}
info:'123456987'
statutoryName:6
1:{statutoryName: 2, info: 'BnQpgw444'}
info:'BnQpgw444'
statutoryName:2
我不明白为什么在第二次单击后会插入值。我想删除 formArray 控件的空行。
【问题讨论】:
标签: angular foreach angular-reactive-forms formarray