Я изменил некоторые коды в customFilterPredicate
customFilterPredicate() {
return (data: PeriodicElement, filter: string): boolean => {
let searchString = JSON.parse(filter) as MyFilter;
let isPositionAvailable = false;
if (searchString.position.length) {
for (const d of searchString.position) {
// equal validate
if (data.position.toString().trim() == d) {
// OR
// Checking index of
if (data.position.toString().trim().indexOf(d) !== -1) {
isPositionAvailable = true;
}
}
} else {
isPositionAvailable = true;
}
return isPositionAvailable && data.name.toString().trim().toLowerCase().indexOf(searchString.name.toLowerCase()) !== -1;
}
}
Добавьте немного интерфейса для лучшего набора
export interface MyFilter {
position: string[],
name: string,
weight: string,
symbol: string
}
Также добавьте интерфейс в filteredValues
filteredValues: MyFilter = { position: [], name: '', weight: '', symbol: '' };