Ich habe die Kurzreferenz zu Angular 1 bis 2 auf der Angular-Website gelesen , und eine Sache, die ich nicht vollständig verstanden habe, war der Unterschied zwischen diesen Sonderzeichen. Zum Beispiel eine, die Sternchen verwendet:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Ich verstehe hier, dass das Hash-Symbol (#) movie
als lokale Vorlagenvariable definiert ist, aber was bedeutet das Sternchen zuvor ngFor
? Und ist es notwendig?
Als nächstes sind die Beispiele aufgeführt, die Klammern verwenden:
<a [routerLink]="['Movies']">Movies</a>
Ich verstehe etwas, dass die Klammern routerLink
es an das HTML-Attribut / die Angular-Direktive binden. Bedeutet dies, dass sie ein Zeiger für Angular sind, um einen Ausdruck auszuwerten? Wie [id]="movieId"
wäre das Äquivalent von id="movie-{{movieId}}"
in Winkel 1?
Schließlich sind Klammern:
<button (click)="toggleImage($event)">
Werden diese nur für DOM-Ereignisse verwendet und können wir andere Ereignisse wie (load)="someFn()"
oder verwenden (mouseenter)="someFn()"
?
Ich denke, die eigentliche Frage ist, ob diese Symbole in Winkel 2 eine besondere Bedeutung haben und wie man am einfachsten weiß, wann man sie verwendet . Vielen Dank!!
bind-
für[]
undon-
für()
oder<template [ngFor]>
für*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
bei der der erste Teil diengModel
Eigenschaft aktualisiert (@Input() ngModel;
derNgModel
Direktive) when
foo` ändert sich und der zweite Teil aktualisiert wird,foo
wenn die@Output() ngModelChange;
(derNgModel
Direktive) gibt ein Ereignis aus.NgModel
wird verwendet, um Werte zu binden, um Elemente und Komponenten zu bilden.[(bar)]
kann für jede@Input() bar;
@Output() barChange;
Kombination verwendet werden, auch für Ihre eigenen Komponenten.[prop]="value"
undprop="{{value}}"
etwas anderem als Syntax? Beide können einen Wert an@Input() value;
in component übergeben.[prop]="value"
kann Werte jeden Typs zuweisen, wirdprop="{{value}}"
immervalue
vor der Zuweisung stringifiziert und ist daher für die Übergabe von Objekten unbrauchbar.[]
- Eigenschaftsbindung Einweg von der Datenquelle zum Ansichtsziel. z.BWir können bind- anstelle von verwenden
[]
()
-> Ereignisbindung Einweg vom Ansichtsziel zur DatenquelleWir können on- anstelle von () verwenden
[()]
- Zwei-Wege-Bindung Banane in einer BoxWir können bindon- anstelle von verwenden
[()]
quelle
Wie bereits erwähnt, erklärt die Angular-Dokumentation, insbesondere das "Helden-Tutorial", dies ausführlicher. Hier ist der Link, wenn Sie es überprüfen möchten .
Klammern sind Ereignisse des Elements, an dem Sie arbeiten, z. B. das Klicken auf eine Schaltfläche wie in Ihrem Beispiel. Dies kann auch Mousedown, Keyup, Onselect oder eine Aktion / ein Ereignis für dieses Element sein. Nach dem
=
steht der Name der aufzurufenden Methode - unter Verwendung der Klammer für den Aufruf. Diese Methode sollte für Ihre Komponentenklasse definiert werden, dh:Klammern funktionieren umgekehrt. Sie sollen Daten von Ihrer Klasse abrufen - das Gegenteil der Klammer, die das Ereignis gesendet hat -, daher ist die Verwendung eines Stils wie diesem ein häufiges Beispiel:
Sehen? Sie geben dem Element einen Stil, der auf Ihrem Modell / Ihrer Klasse basiert.
Dafür hättest du ...
Die Empfehlung lautet, dass Sie doppelte geschweifte Klammern für Dinge verwenden, die Sie auf dem Bildschirm drucken möchten, wie:
Was auch immer Sie verwenden, wenn Sie konsistent sind, wird es die Lesbarkeit Ihres Codes verbessern.
Schließlich ist Ihre
*
Frage eine längere Erklärung, aber sie ist SEHR wichtig: Sie abstrahiert die Implementierung einiger Methoden, die Sie sonst tun müssten, um einengFor
zum Laufen zu bringen.Ein wichtiges Update ist, dass Sie in dem
ngFor
kein Hash mehr verwenden werden; Sie müssenlet
stattdessen wie folgt verwenden:Eine letzte erwähnenswerte Sache ist, dass alle oben genannten Punkte auch für Ihre Komponenten gelten. Wenn Sie beispielsweise eine Methode in Ihrer Komponente erstellen, wird diese aufgerufen mit
()
:quelle