Вы можете добавить директивы в HTML в вашем проекте Angular. Некоторые управляют структурой вашей разметки, в то время как другие фокусируются на атрибутах.
В этой статье мы рассмотрим шесть наиболее распространенных директив Angular: ngFor, ngIf, ngClass, ngStyle, ngModel и ngSwitch.
Что такое угловые директивы?
Директивы Angular позволяют использовать операторы if и циклы for, а также добавлять другое поведение в HTML-код проекта Angular.
Директива | Описание |
---|---|
*нгесли | Вы можете использовать ngIf, когда хотите, чтобы определенные блоки HTML отображались только в том случае, если они соответствуют определенному условию. Например, если у вас есть форма со всплывающим окном, которое отображается после того, как пользователь ввел данные для определенного поля. |
*ngFor | Вы можете использовать ngFor, если вам нужно, чтобы определенный блок повторялся много раз. Например, если у вас есть список элементов и вам нужно отобразить div для каждого элемента. |
*нгкласс | Это добавляет условный стиль с использованием класса. Если оператор if соответствует условию, он применит указанный класс. |
*нгстиль | Это добавляет условный встроенный стиль. Если оператор if соответствует условию, он применит указанные стили. |
*нгМодель | Это позволяет выполнять двустороннюю привязку. Это означает, что вы можете передавать данные в обоих направлениях между файлами HTML и TypeScript. Например, вы можете передать значение атрибута из файла TypeScript в файл HTML и наоборот. |
*ngSwitch | Это позволяет вам добавить оператор switch со многими случаями для проверки многих значений. В зависимости от случаев будут отображаться определенные элементы HTML. |
Структурные директивы включают структуру элементов HTML. К ним относятся ngIf, ngFor и ngSwitch. Директивы атрибутов включают изменение свойств элементов HTML. К ним относятся ngStyle, ngClass и ngModel.
Как использовать нгесли
Чтобы использовать ngIf, вам нужно, чтобы условие оценивалось как истинное для отображения определенного элемента HTML.
- Добавьте две переменные в ваш файл TypeScript. В этом примере есть переменная noPlaylists и переменная для хранения списков воспроизведения. Эта переменная будет оценена как истина, если длина массива плейлистов равна 0.
noPlaylists: логическое значение = ложь;
плейлисты: любой = [];конструктор() { }
ngOnInit(): недействительным {
если (this.playlists.length 0) {
this.noPlaylists = истина;
}
} - В HTML добавьте инструкцию *ngIf. Если значение noPlaylists равно true, появится сообщение об ошибке, содержащееся в приведенном ниже диапазоне. Иначе не будет. Вы можете применять ngIf к различным типам HTML-теги.
Нет доступных плейлистов.
- Чтобы добавить компонент «else» в оператор if, вам потребуется добавить HTML-код для части «else» в блоке шаблона.
Нет доступных плейлистов.
Плейлисты найдены.
Как использовать нгфор
Если вам нужно повторить определенное количество блоков на странице, вы можете использовать директиву ngFor.
- В файле TypeScript добавьте элементы в массив.
плейлисты: любые = [
{"name": "Рок", "numberOfSongs": 5},
{"имя": "Современник", "numberOfSongs": 9},
{"имя": "Популярное", "numberOfSongs": 14},
{"name": "Акустика", "numberOfSongs": 3},
{"name": "Свадебные песни", "numberOfSongs": 25},
{"name": "Металл", "numberOfSongs": 0},
]; - В HTML-файле добавьте оператор *ngFor.
Внутри ngFor вы сможете ссылаться на каждый объект в массиве, используя переменную «playlist». «playlist.name» и «playlist.numberOfSongs» будут печатать оба атрибута в пределах ярлык.Плейлисты найдены.
{{плейлист.название}}
{{playlist.numberOfSongs}} песен
Как использовать нгкласс
Вы можете изменить класс стиля, который использует конкретный элемент div, в зависимости от условия.
- Добавьте два класса в файл CSS с разными стилями. Вы можете добавить любой вид CSS-стиль вы хотите, например, разные цвета фона.
.песни {
цвет фона: #F7F5F2;
}
.noSongs {
цвет фона: #FFA8A8;
} - В цикле for из предыдущего шага добавьте директиву атрибута ngClass. [ngClass]="playlist.numberOfSongs > 0? 'songs': 'noSongs'" использует тот же тернарный оператор, который JavaScript и использование других языков.
Если количество песен больше нуля, к элементу div будет применен класс «songs». Это придаст div серый цвет фона. В противном случае, если количество песен равно нулю, к элементу div будет применен класс noSongs. Это придаст div красный цвет фона.
{{плейлист.название}}
{{playlist.numberOfSongs}} песен
Как использовать ngStyle
Вместо использования ngClass вы можете использовать ngStyle, если хотите применить встроенный стиль вместо стиля через класс.
- Измените ngClass из предыдущего шага, чтобы вместо этого использовать ngStyle.
{{плейлист.название}}
{{playlist.numberOfSongs}} песен
[ngStyle]="{'background-color': playlist.numberOfSongs > 0? '#F7F5F2': '#FFA8A8', 'цвет': playlist.numberOfSongs > 0? 'черный': 'темно-синий' }"
Как использовать нгмодель
Вы можете использовать ngModel для двусторонней привязки. Это означает, что вы можете передавать значение атрибута между файлами HTML и TypeScript.
Например, предположим, что у вас есть элемент ввода в файле HTML, который использует ngModel. Атрибут ngModel привязан к переменной в файле TypeScript. Когда вы вводите значение во входные данные, оно обновляет переменную в файле TypeScript.
Изменения, внесенные в атрибут в файле TypeScript, также отразятся в HTML, если другие элементы div используют эту переменную.
- В app.module.ts добавьте FormsModule в импорт в верхней части файла, а также в массив импорта.
импортировать {FormsModule} из '@angular/forms';
@NgModule({
импорт: [
...
ФормыМодуль
]
}) - Добавьте атрибут в файл TypeScript, чтобы отслеживать, когда пользователь переименовывает список воспроизведения.
переименование списков воспроизведения: boolean = false;
- Сделайте переменную списка воспроизведения общедоступной, чтобы она была доступна при использовании ngModel в файле HTML.
публичные плейлисты: любые = [
...
]; - Добавьте две кнопки в файл HTML, которые позволят вам переименовать или отменить переименование каждого плейлиста.
- Добавьте поле ввода внутри div каждого плейлиста. Ввод будет виден только при нажатии на кнопку Переименовать плейлист кнопка. Это поле ввода будет иметь ngModel, привязанный к «playlist.name».
Когда вы вводите новое имя в поле ввода, playlist.name обновляется в файле TypeScript. Это также обновит другие элементы div в файле HTML, которые используют playlist.name.
Как использовать ngSwitch
Вы можете использовать ngSwitch для отображения определенных элементов на основе случаев в случае переключения.
- Добавьте новый атрибут «рейтинг» к объектам внутри массива плейлистов. Этот атрибут может быть любым числом от 0 до 5 (включительно).
публичные плейлисты: любые = [
{"название": "Рок", "numberOfSongs": 5, "рейтинг": 5},
{"название": "Современник", "numberOfSongs": 9, "рейтинг": 1},
{"name": "Популярно", "numberOfSongs": 14, "rating": 5},
{"название": "Акустика", "numberOfSongs": 3, "рейтинг": 4},
{"name": "Свадебные песни", "numberOfSongs": 25, "rating": 5},
{"название": "Металл", "numberOfSongs": 0, "рейтинг": 0},
]; - Добавьте регистр переключения под названием и количеством песен для плейлиста. В зависимости от рейтинга плейлиста в плейлисте будет отображаться правильное количество звезд.
{{плейлист.название}}
{{playlist.numberOfSongs}} песен
★★★★★★★★★★★★★★★Нет оценок
Узнайте больше об Angular
Теперь вы изучили основы директив Angular, в том числе как использовать ngIf, ngFor, ngClass, ngStyle, ngModel и ngSwitch. Вы можете комбинировать их для создания более сложных пользовательских интерфейсов. Вам предстоит еще многое изучить и узнать об Angular, независимо от того, являетесь ли вы новичком или продвинутым пользователем.
8 лучших курсов по Angular для начинающих и опытных пользователей
Читать дальше
Похожие темы
- Программирование
- Программирование
- JavaScript
- HTML
- CSS
Об авторе

Шарлин — технический писатель в MUO, а также работает полный рабочий день в сфере разработки программного обеспечения. Она имеет степень бакалавра информационных технологий и имеет предыдущий опыт работы в области обеспечения качества и преподавания в университете. Шарлин любит игры и игру на пианино.
Подпишитесь на нашу рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться