Индивидуальный фильтр столбцов для таблицы матов

Я искал какие-либо примеры фильтра в столбце в таблице матов и до сих пор не нашел ни одного. Я получил некоторую информацию о методе filterPredicate, но не понял, как именно к нему подойти.

Мне нужно, чтобы отдельный столбец имел фильтр, такой как текстовое поле или флажок, на основе которого будет фильтроваться dataSource.

Stackblitz


person kal93    schedule 18.06.2018    source источник


Ответы (1)


displayedColumns: string[] = ['position', 'name', 'weight', 'symbol'];
dataSource = new MatTableDataSource(ELEMENT_DATA);

applyFilter(filterValue: string) {
this.dataSource.filter = filterValue.trim().toLowerCase();
this.dataSource.filterPredicate = (data: Element, filter: string) => 
data.name.toLowerCase().indexOf(filter) != -1;
}

export interface Element {
name: string;
position: number;
weight: number;
symbol: string;
}

const ELEMENT_DATA: Element[] = [
{position: 1, name: 'hydrogen', weight: 1.0079, symbol: 'Hi up'},
{position: 2, name: 'Helium', weight: 4.0026, symbol: 'Hi upp'},
{position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'},
{position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'},
{position: 5, name: 'Boron', weight: 10.811, symbol: 'B'},
{position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'},
{position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'},
{position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'},
{position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'},
{position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'},
];

// HTML

 <mat-form-field>
  <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>

Я отфильтровал только поле имени. Таким образом вы можете фильтровать в любом столбце

person monir tuhin    schedule 27.06.2018
comment
Может ли это работать с конкретным столбцом? Я знаю, что это работает как своего рода фильтр на уровне таблицы. Я ищу что-то вроде ag-grid, у которого есть значок фильтра в столбце, который содержит раскрывающийся список или текстовое поле. - person kal93; 29.06.2018
comment
это работает, когда вы фильтруете столбец, который имеет строковый тип для значений ячеек. В случае числа он отстает на 1 нажатие клавиши. Обновлен вопрос с помощью stackblitz. - person kal93; 10.07.2018
comment
Привет @ kal93 Я использовал ту же концепцию, но я использую меню и подменю для фильтрации таблицы, но проблема в том, что я не хочу создавать отдельные методы фильтрации, вы можете мне помочь, как я могу сделать только один метод, подсказка - где в code monir tuhin используемое имя Я хочу использовать свойства динамически, чтобы передать строковые свойства класса из файла html, поэтому, как выполнить приведение типов в файле ts, просто хочу получить подсказку, например, как мы можем этого добиться? - person kushal Baldev; 18.07.2020