Direktiven sind von Angular bereitgestellte Möglichkeiten操作DOM
. Anweisungen werden in属性指令
und结构指令
unterteilt.
Attributanweisung: Ändern Sie das Erscheinungsbild oder Verhalten eines vorhandenen Elements und umschließen Sie es mit []
.
Strukturanweisungen: Fügen Sie DOM-Knoten hinzu und löschen Sie sie, um das Layout zu ändern. Verwenden Sie *
als Anweisungspräfix. [Empfohlene verwandte Tutorials: „Angular-Tutorial“]
1. Integrierte Anweisung
1.1 *ngIf
渲染
DOM-Knoten oder移除
DOM-Knoten basierend auf Bedingungen.
<div *ngIf="data.length == 0">Keine weiteren Daten</div>
<div *ngIf="data.length > 0; then dataList else noData"></div> <ng-template #dataList>Kursliste</ng-template> <ng-template #noData>Keine weiteren Daten</ng-template>
ng-template
wird zum Definieren von Vorlagen verwendet. Nachdem Sie ng-template
zum Definieren einer Vorlage verwendet haben, können Sie diese mit ng-container
und templateOutlet
verwenden.
<ng-template #loading> <button (click)="login()">Anmelden</button> <button (click)="sigup()">sigup</button> </ng-template> <ng-container *ngTemplateOutlet="loading"> </ng-container>
1.2 [hidden]
DOM-Knoten显示
oder DOM-Knoten隐藏
(anzeigen) entsprechend den Bedingungen.
<div [hidden]="data.length == 0">Kursliste</div> <div [hidden]="data.length > 0">Keine weiteren Daten</div>
1.3 *ngFor
durchläuft Daten, um eine HTML-Strukturschnittstelle zu generieren
Liste { ID: Nummer Name: Zeichenfolge Alter: Zahl } Liste: Liste[] = [ { id: 1, Name: „Zhang San“, Alter: 20 }, { ID: 2, Name: „李思“, Alter: 30 } ]
<li *ngFor=" let Element der Liste; sei i = index; sei isEven = gerade; sei isOdd = odd; let isFirst = first; let isLast = last; " > </li>
<li *ngFor="let item of list; trackBy: identifiziere"></li>
identifiziere(index, item){ return item.id; }
2. Anforderungen an benutzerdefinierte Befehle
: Legen Sie die Standardhintergrundfarbe für das Element fest, die Hintergrundfarbe, wenn die Maus hinein bewegt wird, und die Hintergrundfarbe, wenn die Maus heraus bewegt wird.
<div [appHover]="{ bgColor: 'skyblue' }">Hello Angular</div>
import { AfterViewInit, Directive, ElementRef, HostListener, Input } from "@angular/core" // Parametertyp-Schnittstellenoptionen empfangen { bgColor?: Zeichenfolge } @Directive({ Selektor: „[appHover]“ }) Die Exportklasse HoverDirective implementiert AfterViewInit { //Parameter empfangen @Input("appHover") appHover: Options = {} // DOM-Knotenelement, auf dem gearbeitet werden soll: HTMLElement // Holen Sie sich den DOM-Knoten, der auf dem Konstruktor ausgeführt werden soll (private elementRef: ElementRef) { this.element = this.elementRef.nativeElement } // Hintergrundfarbe des Elements nach dem ersten Abschluss der Komponentenvorlage festlegen ngAfterViewInit() { this.element.style.backgroundColor = this.appHover.bgColor ||. } // Fügen Sie dem Element ein Mausbewegungsereignis hinzu @HostListener("mouseenter") enter() { this.element.style.backgroundColor = "rosa" } //Maus-Out-Ereignis für Element hinzufügen @HostListener("mouseleave") Leave() { this.element.style.backgroundColor = "skyblue" } }
Die Rolle der Pipeline besteht darin格式化组件模板数据
.
1. Integriertes Pipeline
-Datumsformat
, Währungsformat,
Großbuchstaben, Konvertieren in
Großbuchstaben, Kleinbuchstaben, Konvertieren in Kleinbuchstaben
, JSON-Format,
{{ Datum | Datum: „JJJJ-MM-TT“ }}
2. Benutzerdefinierte Pipeline-
Anforderungen: Die angegebene Zeichenfolge darf nicht überschritten werden Angegebene Länge
<!-- Dies ist ein... --> {{'Dies ist ein Test' |. Zusammenfassung: 3}}
// summary.pipe.ts import { Pipe, PipeTransform } from '@angular/core'; @Rohr({ Name: 'Zusammenfassung' }); Die Exportklasse SummaryPipe implementiert PipeTransform { transform (Wert: Zeichenfolge, Grenze?: Zahl) { if (!value) return null; let currentLimit = (limit) ? limit : 50; Rückgabewert.substr(0, currentLimit) + '...'; } }
// app.module.ts importiere { SummaryPipe } aus './summary.pipe' @NgModule({ Erklärungen: [ ZusammenfassungPipe ] });