Директивы — это способы, предоставляемые Angular操作DOM
. Инструкции делятся на属性指令
и结构指令
.
Директива атрибута: измените внешний вид или поведение существующего элемента, обернув его []
.
Структурные инструкции: добавляйте и удаляйте узлы DOM для изменения макета, используйте *
в качестве префикса инструкций. [Рекомендуемые связанные учебные пособия: «учебник по angular»]
1. Встроенная инструкция
1.1 *ngIf
渲染
узлы DOM или移除
узлы DOM в зависимости от условий.
<div *ngIf="data.length == 0">Нет данных</div>
<div *ngIf="data.length > 0; then dataList else noData"></div> <ng-template #dataList>Список курсов</ng-template> <ng-template #noData>Нет данных</ng-template>
ng-template
используется для определения шаблонов. После использования ng-template
для определения шаблона вы можете использовать инструкции ng-container
и templateOutlet
.
<ng-шаблон #loading> <button (click)="login()">войти</button> <button (click)="sigup()">подписаться</button> </ng-шаблон> <ng-container *ngTemplateOutlet="loading"> </ng-container>
1.2 [hidden]
显示
узлов DOM или隐藏
узлов DOM (отображение) в зависимости от условий.
<div [hidden]="data.length == 0">Список курсов</div> <div [hidden]="data.length > 0">Данных больше нет</div>
1.3 *ngFor
обходит данные для создания
интерфейса структуры HTML List { идентификатор: номер имя: строка возраст: номер } список: Список[] = [ { id: 1, имя: «Чжан Сан», возраст: 20 }, { id: 2, имя: "李思", возраст: 30 } ]
<ли *ngFor=" пусть элемент списка; пусть я = индекс; пусть isEven = четный; пусть isOdd = нечетный; пусть isFirst = первый; пусть isLast = последний; " > </li>
<li *ngFor="let элемент списка; trackBy:identify"></li>
define(index, item){ вернуть элемент.id; }
2. Требования к пользовательской команде
: установите цвет фона по умолчанию для элемента, цвет фона при перемещении мыши и цвет фона при ее перемещении.
<div [appHover]="{ bgColor: 'skyblue' }">Привет, Angular</div>
import { AfterViewInit, Directive, ElementRef, HostListener, Input } from "@angular/core" // Интерфейс типа параметра получения Options { bgColor?: строка } @Директива({ селектор: "[appHover]" }) класс экспорта HoverDirective реализует AfterViewInit { //Получаем параметры @Input("appHover") appHover: Options = {} // Элемент узла DOM, над которым нужно работать: HTMLElement // Получение узла DOM для работы с конструктором (private elementRef: ElementRef) { this.element = this.elementRef.nativeElement } // Устанавливаем цвет фона элемента после первоначального завершения шаблона компонента ngAfterViewInit() { this.element.style.backgroundColor = this.appHover.bgColor || "небесно-голубой" } // Добавляем событие перемещения мыши к элементу @HostListener("mouseenter") enter() { this.element.style.backgroundColor = "розовый" } //Добавляем событие выхода мыши для элемента @HostListener("mouseleave") Leave() { this.element.style.backgroundColor = "небесно-голубой" } }
Роль конвейера заключается格式化组件模板数据
.
1. Встроенный
формат даты
. Валюта. Формат валюты
. Прописные буквы. Преобразовать в
нижний регистр. Преобразовать в нижний регистр.
Формат данных json.
{{ date | date: "гггг-ММ-дд" }}
2. Требования к пользовательскому конвейеру
: указанная строка не может превышать Указанная длина
<!-- Это... --> {{'Это тест' | резюме: 3}}
// summary.pipe.ts import { Pipe, PipeTransform } из '@angular/core'; @Трубка({ имя: 'резюме' }); класс экспорта SummaryPipe реализует PipeTransform { преобразование (значение: строка, предел?: число) { if (!value) возвращает ноль; пусть factLimit = (ограничение)? Ограничение: 50; возвращаемое значение.substr(0, factLimit) + '...'; } }
// приложение.модуль.ts импортировать {SummaryPipe} из './summary.pipe' @NgModule({ декларации: [ СводкаТруба ] });