将FormArray转换为数组角度

时间:2018-03-05 13:50:03

标签: javascript arrays angular typescript

我有一个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
            }
        }

3 个答案:

答案 0 :(得分:1)

您可以将maplength FromArrayat方法结合使用:

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
    }    
});