Angular 带角度材质表的多文本搜索

Angular 带角度材质表的多文本搜索,angular,html-table,angular-material,Angular,Html Table,Angular Material,搜索目前运行良好。但我对搜索有特殊要求 假设我需要搜索第一行氢锂,用户应该能够输入以下内容: *Hy*Li我应该得到输出氢锂 我怎样才能做到这一点?我需要将*拆分成一个数组,并在拆分*后基于所有搜索项导出我的搜索。您需要修改数据源的属性 示例来自Stackblitz,并基于您的搜索要求 具体而言: constructor(private dialog: MatDialog) { this.dataSource.filterPredicate = (data: Eleme

搜索目前运行良好。但我对搜索有特殊要求

假设我需要搜索第一行
氢锂
,用户应该能够输入以下内容:

*Hy*Li
我应该得到输出
氢锂


我怎样才能做到这一点?我需要将
*
拆分成一个
数组
,并在拆分
*

后基于所有搜索项导出我的搜索。您需要修改数据源的属性

示例来自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;
        };
}
构造函数(专用对话框:MatDialog){
this.dataSource.filterPredicate=
(数据:元素,筛选器:字符串)=>{
const searchArray=filter.split(“*”);
让filterMatch=true;
设prevIndex=0;
searchArray.forEach(子字符串=>{
const strIndex=data.name.toLowerCase().indexOf(subString.toLowerCase());
如果(strIndex==-1 | | strIndex
(抱歉,这太冗长了-我会在有时间的时候再看!)