Угловое условие if от html к компоненту?

У меня эта проблема очень нова в Angular: я хочу создать несколько фильтров в таблице. Итак, чтобы добиться этого, я хочу создать условие «если» для ввода, например, если у меня есть заголовок таблицы с именем «Сущность», тогда он сообщит моему классу компонентов, что это входная Сущность.

как мне этого добиться?

  public performFilter(filterBy: string): IDonnee[] {
      filterBy = filterBy.toLocaleLowerCase();
      // I'd want to put the condition here like (if input.class == "entity then.."
      if (this.isFiltered) {
        return this.filteredDonnees.filter((donnee: IDonnee) =>
          donnee.entity.toLocaleLowerCase().indexOf(filterBy) !== -1);
      } else {
          return this.donnees.filter((donnee: IDonnee) =>
            donnee.entity.toLocaleLowerCase().indexOf(filterBy) !== -1);
        }
  }
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<table *ngIf = "donnees && donnees.length">
  <th>
    Entity
    <br>
    <input size = {{thSize}} ng-model = "entity" class = "entity"[(ngModel)] = "listFilter">
  </th>
  <th>
    bdrID
    <br>
    <input size = {{thSize}} ng-model = "bdrId" class = "bdrId" [(ngModel)] = "listFilter2">
  </th>
</table>

Например, я хотел бы получить имя класса ввода в моем коде JS.

Извините, если я не ясно выразился, вы можете задать любой вопрос и заранее спасибо!

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
58
1

Ответы 1

Итак, если я правильно понимаю, ваша цель - фильтровать при нажатии на соответствующий элемент TH? Например, вызвать событие щелчка на элементе ввода?

Если это так, вы можете попробовать что-то вроде этого: Укажите идентификатор входным элементам: input id = "donnees" (click) = "performFilter ($ event)" Аналогично для обоих элементов TH. По какой-то странной причине он не позволяет мне вставить полный код таблицы.

Вместо того, чтобы иметь несколько массивов, я думаю, что лучше иметь один объект со всеми массивами, чтобы вы могли фильтровать на основе идентификатора, переданного из $ event. Например: filterObject => donnees [], filterDonnees []

public performFilter(event) {
  return this.filterObject[event.target.Id].filter(// write your condition here);
}

Сообщите мне, если это то, что вы искали.

Здравствуйте, в этом примере у меня есть 2 столбца, затем, когда я что-то напишу во вводе (который находится чуть ниже) первого столбца, он отфильтрует это, затем, когда я что-то напишу во втором вводе, он отфильтрует то, что слева от данных после фильтрации с первым входом. (извините, если это трудно понять!) Я попробую ваш метод и вернусь через секунду (корректируя его для моего кода), спасибо! Так что я действительно не использовал событие, просто добавил фильтр прямо на компонент при каждом нажатии клавиши и изменении строки фильтра.

Mich 29.10.2018 15:48

в примере ur, как мне получить доступ к идентификатору ввода без события?

Mich 29.10.2018 15:50

Событие будет (keyup) = 'performFilter ($ event)', а не щелчком.

Minu 29.10.2018 15:51

Хорошо, я попробую это, я пытаюсь понять логику этого. Для чего нужен filterObject? Я имею в виду, что такое filterObject [event.target.id], означает ли это, что это массив, например, сущностей, если id = entity?

Mich 29.10.2018 16:06

Вместо того, чтобы иметь несколько элементов, лучше, если у вас есть один объект, чтобы вы могли фильтровать, передав идентификатор. Это просто для лучшей читаемости и управления кодом. Допустим, если в будущем у вас будет еще один массив, вам придется добавить еще одно условие «Если» для этого массива. Но если вы последуете этому методу, ваш объект performFilter всегда останется прежним. Если вы не хотите этого делать, вы все равно можете использовать метод, который у вас есть, где вы можете использовать идентификатор в условии if и делать то же самое, что и вы. filterObject [event.target.id] => если идентификатор задан, он будет фильтровать объекты

Minu 29.10.2018 16:08

При удаче? @Mich

Minu 29.10.2018 16:58

Я пытаюсь реализовать ваше решение, но не могу этого сделать. С моим решением, как я могу получить «идентификатор» ввода? так как это не с событием, я не могу использовать event.target.Id, я также пробовал let searchId = element (by.model ('entity')); но это не работает = / это кажется таким простым, но я не могу этого сделать.

Mich 29.10.2018 17:01

спасибо за вашу помощь, я попробую еще раз завтра, хорошего дня! :)

Mich 29.10.2018 17:01

Позвольте нам продолжить обсуждение в чате.

Minu 29.10.2018 17:07

Попробуйте этот образец stackblitz.com/edit/…

Minu 29.10.2018 21:52

Другие вопросы по теме