javascript - การแปลง FormArray เป็นอาร์เรย์ใน Angular
ฉันมี FormArray ของ FormGroups ฉันต้องการวนลูปผ่าน FormArray และตรวจสอบว่า FormGroups ใดบ้างที่ถูกต้อง อย่างไรก็ตามฉันไม่สามารถทำได้เพราะฉันไม่สามารถวนลูปผ่าน FormArray ได้เนื่องจากมันไม่ใช่ประเภท Array หรือ string หลักการของฉันคือพยายามแปลง FormArray เป็น Array ถ้าเป็นไปได้ อย่างไรก็ตามฉันไม่ทราบไวยากรณ์ใน TypeScript สำหรับสิ่งนี้
this.applicationFormArray = new FormArray([
this.selectAppFormGroup = new FormGroup({
}),
this.generalAppFormGroup = new FormGroup({
}),
this.fileModeFormGroup = new FormGroup({
}),
this.accessListFormGroup = new FormGroup({
}),
]);checkValidity() {
var foo = this.applicationFormArray as Array<>;
for(var element of this.applicationFormArray){
if(element.valid) {
//do something
}
}คำตอบ #1
คุณสามารถแปลง FormArray ให้เป็น Array ปกติได้ด้วย property value ของ FormArray นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน การใช้ property value บน FormGroup จะคืนค่าเป็น object literal และบน FormArray จะคืนค่าเป็น array
let newArr = this.applicationFormArray.value
newArr.map(...)
ในตัวอย่างของคุณมันจะดูเหมือนแบบนี้:
var foo = this.applicationFormArray.value;
for(var element of foo){
if(element.valid) {
//do something
}
}
คำตอบ #2
คุณสามารถใช้ map ร่วมกับ length ของ FromArray และเมธอด at:
let array = new Array(this.applicationFormArray.length)
.map((v, index) => this.applicationFormArray.at(index) as FormGroup);
แม้ว่ารุ่นสำหรับก็ไม่เลวร้ายเกินไปเช่นกัน:
for (let i =0;i< this.applicationFormArray.length;i++) {
const element = this.applicationFormArray.at(i);
if (element.valid) {
//do something
}
}
