Form Basics
- Forms sind innerhalb des HTML <form> tags
- Zugriff auf die Angular Form Properties sind mit einer Referenz Variable möglich
- mit formVariable.value kann man sich den Status des Forms zeigen lassen
<form #pizzaForm="ngForm">
{{pizzaForm.value | json}}
</form>
Form Submit
- ein Form wird abgeschickt, wenn man den Button des Typs submit klickt
- mit dem ngSubmit Event kann man steuern was dann passieren soll
<form (ngSubmit)="machWas()">
<input type="text" class="form-control"
[(ngModel)]="pizza.name" name="pizzaName">
<button type="submit">Los!</button>
</form>
Form Properties
- nützliche Properties zum Formular
- Hilfreich um Speichern zu erlauben, Meldungen anzuzeigen etc.
<p>Value: {{pizzaForm.value | json}}</p>
<p>Invalid: {{pizzaForm.invalid}}</p>
<p>Valid: {{pizzaForm.valid}}</p>
<p>Touched: {{pizzaForm.touched}}</p>
<p>Untouched: {{pizzaForm.untouched}}</p>
<p>Pristine: {{pizzaForm.pristine}}</p>
<p>Dirty: {{pizzaForm.dirty}}</p>
Form Bindings
- eine einfache Möglichkeit sind Two-Way Bindings mit [(ngModel)]
- Wichtig ist hierbei, dass man auf jeden Fall ein unique name Attribut vergibt
<form (ngSubmit)="machWas()">
<input type="text" class="form-control"
[(ngModel)]="pizza.name" name="pizzaName">
<button type="submit">Los!</button>
</form>
Aufgabe 11.1 - Forms
- Branch: 10_Routing_1
- Erstelle rechts neben der Tabelle eine Visitor Komponente
- die Komponente soll den aktuell selektierten Visitor in einem Formular anzeigen
- Beschränke dich auf Vorname und Nachname, sowie einen Submit und einen Delete Button
- Führe das Speichern und Löschen mit dem Service und der REST API aus
Aufgabe 11.1 - Mögliche Lösung
- Branch: 11_Forms_1
- Wenn ihr eure Änderungen verwerfen möchtet und direkt zur Lösung
wollt: git reset --hard && git checkout 11_Forms_1
Aufgabe 11.2 - Country ComboBox
- Branch: 11_Forms_1
- Füge das Land dem Formular als ComboBox hinzu
- Du kannst alle Länder von der API holen: api/countries
- eine ComboBox besteht aus einem select mit einer Vielzahl von option Elementen darin
<select [(ngModel)]="pizza.zutat"
name="zutat" #select>
<option *ngFor="let zutat of zutaten"
[value]="zutat"
[selected]="zutat === select.value">
{{zutat}}
</option>
<select>
Aufgabe 11.2 - Mögliche Lösung
- Branch: 11_Forms_2
- Wenn ihr eure Änderungen verwerfen möchtet und direkt zur Lösung
wollt: git reset --hard && git checkout 11_Forms_2