当前搜索正常。但是我对搜索有特殊要求。
假设我需要搜索第一行Hydrogen Lithium
,用户应该可以输入以下内容:
*Hy*Li
,我应该得到输出Hydrogen Lithium
我该如何实现?我需要将*
分解成array
,然后在拆分*
答案 0 :(得分:2)
您将需要修改数据源的filter predicate。
根据您的搜索要求here从Stackblitz派生的示例。
特别是:
constructor(private dialog: MatDialog) {
this.dataSource.filterPredicate =
(data: Element, filter: string) => {
const searchArray = filter.split("*");
let filterMatch = true;
let prevIndex = 0;
searchArray.forEach(subString => {
const strIndex = data.name.toLowerCase().indexOf(subString.toLowerCase());
if (strIndex === -1 || strIndex < prevIndex) {
filterMatch = false;
} else {
prevIndex = strIndex;
}
});
return filterMatch;
};
}
(抱歉,这很冗长-一会儿我会评论的!)