[英]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 } }
您可以將map
與FromArray
的length
和at
方法一起使用:
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.