要按布尔属性对FormArray进行排序,可以使用Array的sort()方法。首先,将FormArray中的控件转换为一个普通的数组,然后使用sort()方法根据布尔属性进行排序。以下是一个示例代码:
import { Component } from '@angular/core';
import { FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'app-root',
template: ``
})
export class AppComponent {
formGroup: FormGroup;
items: FormArray;
constructor() {
this.formGroup = new FormGroup({
items: new FormArray([
new FormControl({ name: 'Item 1', checked: false }),
new FormControl({ name: 'Item 2', checked: true }),
new FormControl({ name: 'Item 3', checked: false })
])
});
this.items = this.formGroup.get('items') as FormArray;
}
sortItems() {
const sortedItems = this.items.controls.sort((a, b) => {
const aChecked = a.value.checked;
const bChecked = b.value.checked;
if (aChecked && !bChecked) {
return -1;
} else if (!aChecked && bChecked) {
return 1;
} else {
return 0;
}
});
this.items.controls = sortedItems;
}
}
在上面的代码中,我们创建了一个包含布尔属性的FormArray,并使用ngFor指令将每个控件渲染为一个复选框。当点击"Sort Items"按钮时,调用sortItems()方法对FormArray进行排序。
在sortItems()方法中,我们使用sort()方法对FormArray的控件进行排序。sort()方法接受一个比较函数作为参数,该函数用于定义排序规则。比较函数根据控件的布尔属性进行排序,将选中的项排在前面。
最后,我们将排序后的控件数组赋值回FormArray的controls属性,以更新视图中的排序结果。
上一篇:按布尔排序
下一篇:按布尔值对对象列表进行排序