Таблица таблицы мат на точное совпадение - PullRequest
0 голосов
/ 17 мая 2019

Как я могу отфильтровать по точному совпадению?

Если я отфильтрую по 25915b8d-8b7c-41fe-b015-9b2e0a7d194b, тогда оба

25915b8d-8b7c-41fe-b015-9b2e0a7d194d 122598b7c-41fe-b015-9b2e0a7d194b

.Я хочу точное совпадение и не содержит.

  applyFilter(filterValue: string) {
filterValue = filterValue.trim(); 
filterValue = filterValue.toLowerCase();
this.dataSource.filter = filterValue;

}

1 Ответ

0 голосов
/ 02 июня 2019

вы должны использовать filterPredicate свойство MatTableDataSource

https://material.angular.io/components/table/api#MatTableDataSource

после инициализации this.dataSource (я предполагаю, что "25915b8d-8b7c-41fe-b015-9b2e0a7d194b" является полем с именем "uuid" на T);

this.dataSource.filterPredicate = function(data: T, filterValue: string) {
  return data.uuid
    .trim()
    .toLocaleLowerCase() === filterValue;
};

вам следует заменить T на тот тип, который вы используете на MatTableDataSource<T>

также имейте ввиду, что

По умолчанию каждый объект данных преобразуется в строку своих свойств и возвращает значение true, если фильтр содержит хотя бы одно вхождение в этой строке.

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

...