angular - วิธีส่งเฉพาะส่วนที่เปลี่ยนของฟอร์ม
ฉันมีกลุ่มฟอร์มแล้วฉันจึงทำการจับค่าบนฟอร์มไปยังประเภทอ็อบเจ็กต์ของฉันเพื่อทำคำขอแก้ไขรายการ
แบบฟอร์ม :
public companyForm = new FormGroup(
{
generalInfo: new FormGroup({
name: new FormControl('', [Validators.required, Validators.maxLength(this.maxLength)]),
active: new FormControl(false)
}),
address: new FormGroup({
street: new FormControl('', [Validators.required, Validators.maxLength(this.maxLength)]),
streetNumber: new FormControl('', [Validators.required]),
postalCode: new FormControl('', [Validators.required]),
city: new FormControl('', [Validators.required]),
country: new FormControl('', [Validators.required])
})
})
วัตถุ CompanyEdit:
name: formValue.generalInfo.name,
active: formValue.generalInfo.active,
address: {
street: formValue.address.street,
city: formValue.address.city,
streetNumber: formValue.address.streetNumber,
postalCode: formValue.address.postalCode
},
country: formValue.address.country
ชื่อฟิลด์และวิธีการจัดลำดับซ้อนของพวกมันไม่เข้ากัน ในขณะที่แก้ไข ฉันชอบส่งเฉพาะคอนโทรลที่เปลี่ยนแปลงบนฟอร์ม วิธีที่ดีที่สุดในการได้มาซึ่งคอนโทรลที่สกปรกและแมปพวกมันไปยังประเภทวัตถุของฉันคืออะไร?
คำตอบ #1
คุณสามารถตรวจสอบฟอร์มได้ว่ามีค่าที่สกปรกในฟอร์มกรุปหรือไม่
มีคำตอบจากคำถามที่คล้ายกันใน URL ของ StackOverflow ฉันจะคัดลอก/วางโค้ดมาที่นี่ให้คุณ
getDirtyValues(form: any) {
let dirtyValues = {};
Object.keys(form.controls)
.forEach(key => {
const currentControl = form.controls[key];
if (currentControl.dirty) {
if (currentControl.controls)
dirtyValues[key] = this.getDirtyValues(currentControl);
else
dirtyValues[key] = currentControl.value;
}
});
return dirtyValues;
}
