{ id: 'title', name: 'Title', field: 'title', filterable: true, width: 220 }
const gridOptions: GridOption = { enableFiltering: true, // ... }
const filterOptions = [ { columnId: 'title', type: FieldType.string, filter: MyCustomTitleFilter }, { columnId: 'duration', type: FieldType.number, filter: MyCustomDurationFilter }, // ... ];
@Component({
selector: 'app-title-filter',
template: ,
})
export class MyCustomTitleFilter implements Filter {
private grid: any;
private searchText = '';
init(args: any): void { this.grid = args.grid; }
destroy(): void { }
isTriggeredBy(column: Column): boolean { return column.id === 'title'; }
getArguments(): any { return { searchText: this.searchText }; }
onChange(event: any): void { // filter the grid } }
this.grid.setFilter(filterOptions);
onChange(event: any): void { const searchString = event; const columnFilters = [];
if (searchString) { columnFilters.push({ columnId: 'title', operator: OperatorType.contains, searchTerms: [searchString] }); }
this.grid.setFilter(columnFilters); }
参考