簡體   English   中英

將 FormArray 轉換為數組角度

[英]Casting a FormArray to an array angular

我有一個 FormGroups 的 FormArray,我想遍歷 FormArray 並檢測哪些 FormGroups 是有效的。 但是我無法這樣做,因為我無法遍歷 FormArray,因為它不是 Array 或 string 類型。 如果可能,我的邏輯是以某種方式將 FormArray 轉換為 Array。 但是我不知道打字稿中的語法。

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

您可以將mapFromArraylengthat方法一起使用:

let array = new Array(this.applicationFormArray.length)
    .map((v, index) => this.applicationFormArray.at(index) as FormGroup);

盡管for版本也不錯:

for (let i =0;i< this.applicationFormArray.length;i++) {
    const element = this.applicationFormArray.at(i);
    if (element.valid) {
        //do something
    }
}

一種可能的解決方案是使用過濾器並僅獲取有效表格。

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

您可以使用 FormArray 的 value 屬性將 FormArray 轉換為常規 Array。 這對我有用。 在 FormGroup 上使用 value 屬性返回一個對象文字,在 FormArray 上它返回一個數組。

let newArr = this.applicationFormArray.value
newArr.map(...)

在您的示例中,它看起來像這樣:

var foo = this.applicationFormArray.value;
for(var element of foo){
   if(element.valid) {
       //do something
    }
}

嘗試使用foreach而不是

this.applicationFormArray.forEach(element => {
    if(element.valid) {
        //do something
    }    
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM