Используйте свойство filterPredicate источника данных.Если ваш dataSource типичен для примеров
dataSource = new MatTableDataSource(ELEMENT_DATA);
Вы можете определить переменную regExpr, которая изменится в applyFilterFunction
regExpr:any; //<--define a variable
applyFilter(filterValue: string) {
this.regExpr = new RegExp(filterValue);
this.dataSource.filter = filterValue;
}
, тогда вы можете создать такую функцию, как
regExprFilter()
{
return (data: any, filter: string) => {
try {
return this.regExpr.test(data.name)
} catch (e) {
return false
}
}
}
И в ngOnInit измените filterPredicate
ngOnInit() {
this.dataSource.filterPredicate =this.regExprFilter()
}
см. stackblitz
ПРИМЕЧАНИЕ. Я отредактировал свой ответ, чтобы сделать более удобный код
NOTE2: Будьте осторожны, используя regExp, если вы хотите определить строковую переменную в коде.вам нужно взять учетную запись "\" должно быть написано как "\\", например
let myExpresion="^\w" //BAD, myExpresion get the value "^w"
let myExpresion="^\\w" //GOOD, myExpresion get the value "^\w"