将FormArray转换为数组角度

问题描述 投票:2回答:3

我有一个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
            }
        }
javascript arrays angular typescript
3个回答
1
投票

你可以使用maplength以及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
    }
}

0
投票

一种可能的解决方案是使用过滤器并仅获取有效形式。

const myValidForms = formArray.controls.filter(myForm => myForm.valid);


-1
投票

尝试使用foreach而不是

this.applicationFormArray.forEach(element => {
    if(element.valid) {
        //do something
    }    
});
© www.soinside.com 2019 - 2024. All rights reserved.