Angular2 + Datenfluss:
In Angular können die Daten auf folgende Weise zwischen dem Modell (Komponentenklasse ts.file) und der Ansicht (HTML der Komponente) fließen:
- Vom Modell zur Ansicht.
- Von der Ansicht zum Modell.
- Daten fließen in beide Richtungen, auch als 2-Wege-Datenbindung bekannt .
Syntax:
Modell zum Anzeigen:
<input type="text" [ngModel]="overRideRate">
Diese Syntax wird auch als Eigenschaftsbindung bezeichnet . Wenn sich nun die overRideRate
Eigenschaft des Eingabefelds ändert, wird die Ansicht automatisch aktualisiert. Wenn die Ansicht jedoch aktualisiert wird, wenn der Benutzer eine Nummer eingibt, wird die overRideRate
Eigenschaft nicht aktualisiert.
Ansicht zum Modell:
(input)="change($event)" // calling a method called change from the component class
(input)="overRideRate=$event.target.value" // on input save the new value in the title property
Was hier passiert, ist, dass ein Ereignis ausgelöst wird (in diesem Fall Eingabeereignis, kann aber ein beliebiges Ereignis sein). Wir können dann Methoden der Komponentenklasse aufrufen oder die Eigenschaft direkt in einer Klasseneigenschaft speichern.
2-Wege-Datenbindung:
<input [(ngModel)]="overRideRate" type="text" >
Die folgende Syntax wird für die bidirektionale Datenbindung verwendet. Es ist im Grunde ein syntaktischer Zucker für beide:
- Bindungsmodell zum Anzeigen.
- Bindungsansicht zum Modell
Jetzt ändert sich etwas in unserer Klasse. Dies spiegelt unsere Ansicht wider (Modell zu Ansicht). Wenn der Benutzer die Eingabe ändert, wird das Modell aktualisiert (Ansicht zu Modell).
[ngModel]
- Es ist nur eine Eigenschaftsbindung, keine Zwei-Wege-Bindung. Die Eingabe eines neuen Werts wird also nicht aktualisiertoverRideRate
.