Angular. Ferdinand Malcher

Angular - Ferdinand Malcher


Скачать книгу
denn die werden in der Regel mit eckigen Klammern angegeben. Angular weiß, ob es sich um ein Property Binding oder eine Direktive handelt, und verarbeitet den Ausdruck entsprechend.

      Bekannte Vertreter sind ngSwitch, ngClass, ngStyle, routerLink und routerLinkActive. Auf ngClass und ngStyle gehen wir auf den Seiten 107 und 108 noch gezielter ein, wenn wir über Class und Style Bindings sprechen. Im Kapitel zu Routing ab Seite 147 lernen wir schließlich auch den routerLink kennen.

      Sie werden sehen, dass wir Attributdirektiven auf zwei Arten verwenden können:

      1 mit eckigen Klammern, wie das Property Binding<div [myDirective]="foo"></div>

      2 in Attributschreibweise ohne Klammern<div myDirective="foo"></div>

      Der Unterschied ist subtil, aber sehr wichtig: Wenn auf der linken Seite eckige Klammern notiert sind, so wird der rechtsseitige Wert als Ausdruck interpretiert. foo bezieht sich also im ersten Beispiel auf das Property foo aus der Komponentenklasse. Lassen wir die eckigen Klammern weg, so wird rechts ein String angegeben. foo bezeichnet an dieser Stelle also tatsächlich die Zeichenkette foo.

      Merke: Eckige KlammernAusdruck

      Wenn links eckige Klammern stehen, so wird rechts ein Ausdruck notiert. Ohne eckige Klammern wird die rechte Seite eines Attributs als String ausgewertet.

       | Pipes

      Pipes werden genutzt, um Daten für die Anzeige zu transformieren. Hinter einer Pipe steckt eine Funktion, die den Eingabewert nach einer bestimmten Vorschrift verarbeitet und das tranformierte Ergebnis zurückgibt. Wir können Pipes in jedem Template-Ausdruck verwenden, also bei der Interpolation, in Property Bindings oder in Direktiven. Sie werden durch das Symbol | (das »Pipe-Zeichen«) eingeleitet:

      <p>{{ name | lowercase }}</p>

       Pipes verketten

      Pipes können auch aneinandergehängt werden, um mehrere Transformationen durchzuführen:

      <p>{{ myDate | date | uppercase }}</p>

      In der Iteration V ab Seite 353 widmen wir uns den Pipes noch sehr ausführlich. Dort lernen wir auch, wie wir eigene Pipes implementieren können.

       Ist das alles gültiges HTML?

      Obwohl die vielen verschiedenen Klammern und Sonderzeichen zunächst ungewöhnlich sind, handelt es sich um syntaktisch gültiges HTML. Dazu ziehen wir die HTML-Spezifikation des W3C zurate. Hier heißt es:

      »Attribute names must consist of one or more characters other than the space characters, U+0000, NULL, «, ’, >, /, =, the control characters, and any characters that are not defined by Unicode.«4

      Auch mit der Angular-Syntax schreiben wir also valides HTML. Trotzdem kennt der Browser natürlich keine Event oder Property Bindings. Deshalb werden all diese Ausdrücke von Angular automatisch so umgewandelt, dass jeder Browser damit umgehen kann.

       Zusammenfassung

      Die Template-Syntax von Angular ist ein simples, aber mächtiges Werkzeug, um ein dynamisches Zusammenspiel von Komponente und Template zu erreichen. Jedes Verfahren verfügt über eine eigene Schreibweise. Alle Bestandteile der Template-Syntax und ihre konkreten Anwendungen sind noch einmal in den folgenden Tabellen dargestellt.

      Auf den ersten Blick erscheint die neue Template-Syntax womöglich komplex und umständlich. Aber glauben Sie uns: Nachdem wir alle Konzepte in der Praxis behandelt haben, werden Sie die Notationen ohne Probleme anwenden können.

Name Beispiel Beschreibung
Interpolation {{ expression }} Daten im Template anzeigen
Property Binding [property]="expression" Eigenschaften eines DOM-Elements schreiben
Event Binding (event)="myHandler($event)" Event abonnieren
Two-Way Binding [(ngModel)]="myModel" Eigenschaften setzen und Ereignisse verarbeiten, vor allem verwendet für Template-Driven Forms
Attributdirektive [ngClass]="expression" Eigenschaften/Verhalten eines DOM-Elements verändern
Strukturdirektive *ngIf="expression" DOM-Baum manipulieren, indem Elemente hinzugefügt oder entfernt werden
Elementreferenz #myId Direktzugriff auf DOM-Elemente oder ihre Direktiven
Pipe expr | myPipe | otherPipe Daten im Template transformieren

      Tab. 6–2 Template-Syntax: Übersicht

Name Beispiel Beschreibung
Bedingungen *ngIf="expression" Element nur rendern, wenn expression wahr ist
Schleifen *ngFor="let e of list" Element für jedes item e des Arrays list wiederholen
Attribute Binding [attr.colspan]="myColspan" Attribut colspan mit dem Wert des Propertys myColspan schreiben
Style Binding [style.color]="myColor" CSS-Property color mit dem Wert des Propertys myColor schreiben
Class Binding [class.myClass]="expression" CSS-Klasse myClass anwenden, wenn expression wahr ist
ngClass [ngClass]="classList" CSS-Klassen aus dem Property classList auf das Element anwenden
ngClass [ngClass]="{ myClass: isValid, otherClass: hasError }" CSS-Klassen konditional anwenden: Klasse myClass, wenn isValid wahr, usw.

      Tab. 6–3 Template-Syntax: konkrete Anwendungen

      


Скачать книгу