我有一个FormGroups的FormArray,我想迭代FormArray并检测哪些FormGroup是有效的。但是我无法这样做因为我无法迭代FormArray,因为它不是Array或string类型。我的逻辑是,如果可能的话,以某种方式将FormArray转换为数组。但是,我不知道打字稿中的语法。
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
}
}
答案 0 :(得分:1)
您可以将map
与length
FromArray
和at
方法结合使用:
let array = new Array(this.applicationFormArray.length)
.map((v, index) => this.applicationFormArray.at(index) as FormGroup);
虽然for for version也不错:
for (let i =0;i< this.applicationFormArray.length;i++) {
const element = this.applicationFormArray.at(i);
if (element.valid) {
//do something
}
}
答案 1 :(得分:0)
一种可能的解决方案是使用过滤器并仅获取有效的表单。
const myValidForms = formArray.controls.filter(myForm => myForm.valid);
答案 2 :(得分:-1)
尝试使用foreach而不是
this.applicationFormArray.forEach(element => {
if(element.valid) {
//do something
}
});