Структурные директивы
Структурные директивы отвечают за html верстку. Они работают с DOM структурой добавляя, удаляя и манипулируя элементами.
Ангулар имеет встроенные структурные директивы NgIf, NgFor и NgSwitch.
Структурные директивы имеют удобную форму записи со звездой, которая является сахаром для конструкций вида:
<ng-template [ngIf]="...">
...
</ng-template>
Примеры работы со встроенными структурными директивами:
<div *ngIf="user" class="name">{{user.name}}</div>
<ul>
<li *ngFor="let user of users">{{user.name}}</li>
</ul>
<div [ngSwitch]="myCaseValue">
<p *ngSwitchCase="5">value is 5</p>
<p *ngSwitchCase="15">value is 15</p>
<p *ngSwitchCase="25">value is 25</p>
<p *ngSwitchCase="35">value is 35</p>
</div>
Собственная структурная директива
Создадим файл unless.directive.ts:
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[appUnless]'
})
export class UnlessDirective {
@Input() set appUnless(condition: boolean) {
if (!condition) {
this.vcRef.createEmbeddedView(this.templateRef);
} else {
this.vcRef.clear();
}
}
constructor(private templateRef: TemplateRef, private vcRef: ViewContainerRef) { }
}
Подключим UnlessDirective в массив declarations в AppModule.
Теперь можно использовать созданную директиву:
<ul *appUnless="onlyOdd" class="list-group">
<li *ngFor="let even of evenNumbers"
class="list-group-item">
{{even}}
</li>
</ul>
Выпадающий список
Рассмотрим пример использования структурной директивы для создания выпадающих списков. Для списка используем элемент бутстрапа, у открытого списка добавляется каласс open:
import { Directive, HostListener, HostBinding } from '@angular/core';
@Directive({
selector: '[appDropdown]'
})
export class DropdownDirective {
@HostBinding('class.open') isOpen = false;
@HostListener('click') toggleOpen() {
this.isOpen = !this.isOpen;
}
}
Помощь сайту
ЮMoney:
4100 1180 7209 833
Карта Сбербанк:
2202 2080 6183 7127
Формы. Реактивный подход.
Формы. Шаблонный подход.
Формы в Angular
Subject
Observable. Subscribe и Unsubscribe
Route. Обновление шаблона
Route Resolving
Route передача статичных данных
Route. Контроль навигации с помощью сервиса
Route. Защита роутера
Route. Вынос настроек роутера
Route. Переключения и параметры
JavaScript операторы
Сервисы
Структурные директивы
Binding свойств директив
HostListener и HostBinding
Директива атрибута
Навигация. Передача данных событиями
События и жизненный цикл
ng-content
Инкапсуляция стилей и ссылки
Связывание свойств и событий
Компонент и модель
Директива ngFor
Angular CSS и Style
Динамические шаблоны в Angular
События
Компонент и данные
Шаблон и стили компонента
Создание компонентов в Angular
TypeScript, Bootstrap, Main.ts
Установка и первый запуск Angular
Возможно, вам будет интересно
Route. Переключения и параметры
Работа с роутером и ссылками в Angular. Программное переключение роутера и параметры пути в Angular
Route. Обновление шаблона
Обновление шаблона при динамическом роутинге и отписка от наблюдения
JavaScript операторы
JavaScript операторы, которые важно знать для работы с Angular
ng-content
Использование тега ng-content и размещения верстки из шаблона в теге вызова компонента в Angular