#javascript #angular #typescript
Вопрос:
Я хочу отфильтровать свои данные , используя имя, номер мобильного телефона, по одному полю ввода, как фильтр данных материалов. конструктор:
constructor() {
this.filteredPatient = this.patientsearch.valueChanges
.pipe(
startWith(''),
map(p => p ? this._filterPatient(p) : this.patients.slice())
);
}
private _filterPatient(value: string): IPatient[] {
const filterValue = value.toLowerCase();
const searchByfirstName = this.patients.filter(p => p.firstName.toLowerCase().includes(filterValue));
const searchBylastName = this.patients.filter(p => p.lastName.toLowerCase().includes(filterValue));
const searchBymobileNumber = this.patients.filter(p => p.mobileNumber.toLowerCase().includes(filterValue));
const mergedObj = { ...searchByfirstName, ...searchBymobileNumber };
return mergedObj;
}
но это не работает . Может ли кто-нибудь подсказать мне, как я могу фильтровать данные .
Ответ №1:
Вы можете добиться этого следующим образом:
private _filterPatient(value: string): IPatient[] {
const filterValue = value.toLowerCase();
const result = this.patients.filter(
(p) =>
p.firstName?.toLowerCase().includes(filterValue) ||
p.lastName?.toLowerCase().includes(filterValue) ||
p.mobileNumber?.toLowerCase().includes(filterValue)
);
return resu<
}