Как фильтровать содержимое при поиске независимо от учета регистра с помощью angular2

#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;
                }
              })