#angular #filter
#angular #Фильтр
Вопрос:
я могу осуществлять поиск по содержимому на основе ключа. Но у родителя есть свои дочерние компоненты, так, например: я пытаюсь отфильтровать содержимое с "c"
помощью , если я это сделаю, я получу родительский и 1 дочерний, но здесь у меня есть 2 дочерних компонента, один с "Check"
, а другой с "check_test"
. Когда я пытаюсь выполнить фильтрацию с помощью алфавита «c», я должен получить оба дочерних компонента, независимо от учета регистра.
TS:
searchFacility(search) {
this.sLetter = search;
if (search) {
this.dtFacilities.expandedRows = [];
setTimeout(() => {
this.dtFacilities.expandedRows = this.dtFacilities.value;
this.dtFacilities.value.forEach(m => {
m.memberFacilities.forEach(f => {
if (f.facilityName.includes(search)) {
f.isShowMember = false;
} else {
f.isShowMember = true;
}
})
})
}, 100);
}
else {
this.dtFacilities.expandedRows = [];
this.dtFacilities.value.forEach(m => {
m.memberFacilities.map(val => {
val.isShowMember = false;
})
})
}
}
Здесь, в этом разделе,
if (f.facilityName.includes(search)) {
f.isShowMember = false;
} else {
f.isShowMember = true;
}
})
для поиска он принимает "c"
, поэтому он выполняет условие else, устанавливая "Check"
флаг isShowMember как true.
Комментарии:
1. вы могли бы использовать toLowerCase() для вашего поиска и вашего facitilityName
2. я даже это также обрабатывается в файле pipe.ts
3. Я только что попробовал приведенный ниже код в вашем stackblitz, и он сработал.
4. пожалуйста, попробуйте указать «ch», в моем приложении не отображается «Проверка» с помощью «c», также я не могу увидеть «Проверить»
Ответ №1:
let mySearch = search.toLowerCase();
let facilityName = f.facilityName.toLowerCase();
if (facilityName amp;amp; facilityName.includes(search)) {
f.isShowMember = false;
} else {
f.isShowMember = true;
}
})