Урок 13: Добавление функции поиска в ваше приложение¶
Этот обучающий урок демонстрирует, как добавить функцию поиска в ваше приложение Angular.
Приложение позволит пользователям искать по данным, предоставленным вашим приложением, и отображать только те результаты, которые соответствуют введенному термину.
Затраты времени: ожидайте, что на выполнение этого урока вы потратите около 20 минут.
Перед началом¶
Этот урок начинается с кода из предыдущего урока, поэтому вы можете:
-
Использовать код, созданный в Уроке 12, в своей интегрированной среде разработки (IDE).
-
Начните с примера кода из предыдущего урока. Выберите код из Урока 12, где вы можете:
-
Использовать живой пример в StackBlitz, где интерфейс StackBlitz является вашей IDE.
-
Использовать download пример и открыть его в вашей IDE.
-
Если вы не просмотрели введение, посетите Введение в Angular tutorial, чтобы убедиться, что у вас есть все необходимое для завершения этого урока.
Если у вас возникнут трудности во время этого урока, вы можете просмотреть готовый код для этого урока.
После завершения¶
- Ваше приложение будет использовать данные из формы для поиска подходящего жилья
- Ваше приложение будет отображать только подходящие места для жилья.
Шаги урока¶
Выполните следующие шаги в коде приложения в вашей IDE.
Шаг 1 — Обновление свойств компонента home¶
В этом шаге вы обновите класс HomeComponent
для хранения данных в новом свойстве массива, которое вы будете использовать для фильтрации.
-
В
src/app/home/home.component.ts
добавьте новое свойство к классу под названиемfilteredLocationList
.1
filteredLocationList: HousingLocation[] = [];
Список
filteredLocationList
содержит значения, которые соответствуют критериям поиска, введенным пользователем. -
По умолчанию при загрузке страницы
filteredLocationList
должен содержать полный набор значений местоположений жилья. Обновитеконструктор
дляHomeComponent
, чтобы установить это значение.1 2 3 4
constructor() { this.housingLocationList = this.housingService.getAllHousingLocations(); this.filteredLocationList = this.housingLocationList; }
Шаг 2 — Обновление шаблона домашнего компонента¶
Компонент HomeComponent
уже содержит поле ввода, которое вы будете использовать для получения ввода от пользователя. Этот строковый текст будет использоваться для фильтрации результатов.
-
Обновите шаблон
HomeComponent
, чтобы включить переменную шаблона во входные данные под названием#filter
.1 2 3 4 5
<input type="text" placeholder="Filter by city" #filter />
В этом примере используется переменная шаблона для получения доступа к input в качестве его значения.
-
Далее обновите шаблон компонента, чтобы прикрепить обработчик события к кнопке "поиск".
1 2 3 4 5 6 7
<button class="primary" type="button" (click)="filterResults(filter.value)" > Search </button>
Привязавшись к событию click на кнопке, вы можете вызвать функцию
filterResults
. Аргументом функции является свойствоvalue
переменной шаблонаfilter
. Точнее, свойство.value
из HTML-элементаinput
. -
Последнее обновление шаблона касается директивы
ngFor
. Обновите значениеngFor
, чтобы перебирать значения из массиваfilteredLocationList
.1 2 3 4
<app-housing-location *ngFor="let housingLocation of filteredLocationList" [housingLocation]="housingLocation" ></app-housing-location>
Шаг 3 — Реализация функции обработчика события¶
Шаблон был обновлен для привязки функции filterResults
к событию click
. Далее ваша задача — реализовать функцию filterResults
в классе HomeComponent
.
-
Обновите класс
HomeComponent
, чтобы включить в него реализацию функцииfilterResults
.1 2 3 4 5 6 7 8 9
filterResults(text: string) { if (!text) { this.filteredLocationList = this.housingLocationList; } this.filteredLocationList = this.housingLocationList.filter( housingLocation => housingLocation?.city.toLowerCase().includes(text.toLowerCase()) ); }
Эта функция использует функцию фильтра
String
для сравнения значения параметраtext
со свойствомhousingLocation.city
. Вы можете обновить эту функцию для сравнения с любым свойством или несколькими свойствами, чтобы сделать это более интересным упражнением. -
Сохраните свой код.
-
Обновите браузер и убедитесь, что при нажатии кнопки "Поиск" после ввода текста можно выполнить поиск данных о местоположении жилья по городу.
Обзор урока¶
В этом уроке вы обновили свое приложение, чтобы:
- использовать переменные шаблона для взаимодействия со значениями шаблона
- добавить функциональность поиска с помощью привязки событий и функций массива.
Если у вас возникли трудности с этим уроком, вы можете просмотреть готовый код.
Следующие шаги¶
Дополнительная информация¶
Для получения дополнительной информации о темах, рассмотренных в этом уроке, посетите: