这是选择垫的代码。
<mat-form-field>
<mat-select placeholder="RequestID" id = "filter-check-box" multiple>
<mat-option (onSelectionChange) = "RequestIDCheckboxFilter($event, RequestID)"
*ngFor="let RequestID of RequestIDArray" [value]="RequestID">{{RequestID}}</mat-option>
</mat-select>
RequestIDArray: string[] = ['REQ001', 'REQ002', 'REQ003', 'REQ004'];
这是RequestIDCheckboxFilter函数的定义。 ReqIDFilter是用于存储当前检查值的数组。 :
RequestIDCheckboxFilter(event, text: string) {
var CheckboxFilterComponent = this.gridApi.getFilterInstance("requestID");
if(event.isUserInput) {
var index = this.ReqIDFilter.indexOf(text);
if(index == -1) {
this.ReqIDFilter.push(text);
}
else {
this.ReqIDFilter.splice(index, 1);
}
}
for(var i = 0; i < this.ReqIDFilter.length; i++) {
CheckboxFilterComponent.setModel({
type: "equals",
filter: this.ReqIDFilter[i]
})
}
this.gridApi.onFilterChanged();
}
这样做时,即使选择了多个选项,我也只能看到其中的一行。说,如果选择了REQ001和REQ002,则只有带有REQ001的行可见。我也尝试过在setModel内使用for循环,但这会导致错误。有什么办法可以过滤表中数组中的所有值?
编辑:我正在使用ag-grid的社区版本。
答案 0 :(得分:0)
我认为text filter
无法做到这一点。
在循环中,您每次迭代都会覆盖过滤器模型。
另请参阅ag-grid gridApi.setFilterModel() model with multiple conditions [angular6]
企业版具有Set Filter
,可以满足您的需求。
所以我看到以下选项
编辑:企业版有一个试用版,因此您可以测试是否设置过滤器是您所需的正确工具。
也许Does ag-grid have an api to filter multiple checkbox values?有帮助吗?