Урок 8: Использование *ngFor
для вывода списка объектов в компоненте¶
Этот обучающий урок демонстрирует, как использовать директиву ngFor
в шаблонах Angular для отображения динамически повторяющихся данных в шаблоне.
Затраты времени: ожидайте, что на выполнение этого урока вы потратите около 10 минут.
Перед началом¶
Этот урок начинается с кода из предыдущего урока, поэтому вы можете:
-
Использовать код, созданный в уроке 7, в своей интегрированной среде разработки (IDE).
-
Начните с примера кода из предыдущего урока. Выберите код из Урока 7, где вы можете:
-
Использовать живой пример в StackBlitz, где интерфейс StackBlitz является вашей IDE.
-
Использовать download пример и открыть его в вашей IDE.
-
Если вы не просмотрели введение, посетите Введение в Angular tutorial, чтобы убедиться, что у вас есть все необходимое для завершения этого урока.
Если у вас возникнут трудности во время этого урока, вы можете просмотреть готовый код для этого урока.
После завершения¶
-
Вы добавите набор данных в приложение.
-
Ваше приложение будет отображать список элементов из нового набора данных с помощью
ngFor
.
Концептуальный обзор ngFor¶
В Angular ngFor
— это особый тип директив, используемый для динамического повторения данных в шаблоне. В обычном JavaScript вы бы использовали цикл for — ngFor обеспечивает аналогичную функциональность для шаблонов Angular. Мы используем Angular template syntax для указания деталей директивы.
Вы можете использовать ngFor
для итерации по массивам и даже асинхронным значениям. В этом уроке вы добавите новый массив данных для итерации.
Для более подробного объяснения, пожалуйста, обратитесь к руководству Built-in directives.
Шаги урока¶
Выполните эти шаги над кодом приложения в вашей IDE.
Шаг 1 — Добавьте данные о жилье в HomeComponent
¶
В HomeComponent
есть только одно местоположение жилья. В этом шаге вы добавите массив записей HousingLocation
.
-
В
src/app/home/home/home.component.ts
удалите свойствоhousingLocation
из классаHomeComponent
. -
Обновите класс
HomeComponent
, чтобы он имел свойствоhousingLocationList
. Обновите свой код, чтобы он соответствовал следующему коду:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
export class HomeComponent { readonly baseUrl = 'https://angular.io/assets/images/tutorials/faa'; housingLocationList: HousingLocation[] = [ { id: 0, name: 'Acme Fresh Start Housing', city: 'Chicago', state: 'IL', photo: `${this.baseUrl}/bernard-hermant-CLKGGwIBTaY-unsplash.jpg`, availableUnits: 4, wifi: true, laundry: true, }, { id: 1, name: 'A113 Transitional Housing', city: 'Santa Monica', state: 'CA', photo: `${this.baseUrl}/brandon-griggs-wR11KBaB86U-unsplash.jpg`, availableUnits: 0, wifi: false, laundry: true, }, { id: 2, name: 'Warm Beds Housing Support', city: 'Juneau', state: 'AK', photo: `${this.baseUrl}/i-do-nothing-but-love-lAyXdl1-Wmc-unsplash.jpg`, availableUnits: 1, wifi: false, laundry: false, }, { id: 3, name: 'Homesteady Housing', city: 'Chicago', state: 'IL', photo: `${this.baseUrl}/ian-macdonald-W8z6aiwfi1E-unsplash.jpg`, availableUnits: 1, wifi: true, laundry: false, }, { id: 4, name: 'Happy Homes Group', city: 'Gary', state: 'IN', photo: `${this.baseUrl}/krzysztof-hepner-978RAXoXnH4-unsplash.jpg`, availableUnits: 1, wifi: true, laundry: false, }, { id: 5, name: 'Hopeful Apartment Group', city: 'Oakland', state: 'CA', photo: `${this.baseUrl}/r-architecture-JvQ0Q5IkeMM-unsplash.jpg`, availableUnits: 2, wifi: true, laundry: true, }, { id: 6, name: 'Seriously Safe Towns', city: 'Oakland', state: 'CA', photo: `${this.baseUrl}/phil-hearing-IYfp2Ixe9nM-unsplash.jpg`, availableUnits: 5, wifi: true, laundry: true, }, { id: 7, name: 'Hopeful Housing Solutions', city: 'Oakland', state: 'CA', photo: `${this.baseUrl}/r-architecture-GGupkreKwxA-unsplash.jpg`, availableUnits: 2, wifi: true, laundry: true, }, { id: 8, name: 'Seriously Safe Towns', city: 'Oakland', state: 'CA', photo: `${this.baseUrl}/saru-robert-9rP3mxf8qWI-unsplash.jpg`, availableUnits: 10, wifi: false, laundry: false, }, { id: 9, name: 'Capital Safe Towns', city: 'Portland', state: 'OR', photo: `${this.baseUrl}/webaliser-_TPTXZd9mOo-unsplash.jpg`, availableUnits: 6, wifi: true, laundry: true, }, ]; }
Не удаляйте декоратор
@Component
, вы обновите этот код в следующем шаге.
Шаг 2 — Обновление шаблона HomeComponent
для использования ngFor
¶
Теперь у приложения есть набор данных, который можно использовать для отображения записей в браузере с помощью директивы ngFor
.
-
Обновите тег
<app-house-location>
в коде шаблона следующим образом:1 2 3 4
<app-housing-location *ngFor="let housingLocation of housingLocationList" [housingLocation]="housingLocation"> </app-housing-location>
Обратите внимание, в коде
[housingLocation] = "housingLocation"
значениеhousingLocation
теперь относится к переменной, используемой в директивеngFor
. До этого изменения оно ссылалось на свойство классаHomeComponent
. -
Сохраните все изменения.
-
Обновите браузер и убедитесь, что приложение теперь отображает сетку расположения жилья.
Обзор урока¶
В этом уроке вы использовали директиву ngFor
для динамического повторения данных в шаблонах Angular. Вы также добавили новый массив данных для использования в приложении Angular. Теперь приложение динамически отображает список мест расположения жилья в браузере.
Приложение обретает форму, отличная работа.
Если у вас возникли трудности с этим уроком, вы можете просмотреть готовый код для него.