π‘Hinweise und Zusatzaufgaben zu Kapitel 1
Last updated
Last updated
WebStorm ermΓΆglicht dir sehr einfach neue Elemente fΓΌr dein Projekt zu erstellen, dazu fΓΌhre einen Rechtsklick auf den Ordner aus in welchem du ein neues Element erstellen mΓΆchtest.
Nun kannst du unter new / Angular Schematic alle gewΓΌnschten Elemente einfΓΌgen. WΓ€hrend dem Tippen bringt dir WebStorm VorschlΓ€ge, was du eventuell erstellen mΓΆchtest. Probiere es aus.
In Angular erstellst du diverse Komponente welche in einer Seite geladen und angezeigt werden kΓΆnnen. Komponente werden mit der folgenden Annotation gekennzeichnet.
Innerhalb der Komponente Referenziert du das Template (.html) und das dazugehΓΆrige Design (.scss). Ebenso wichtig ist der Selektor, mit diesem wΓ€hlst du einen passenden Namen fΓΌr deine Komponente. In Angular ist es Norm geworden, dass Komponente mit dem Prefix "app-" gekennzeichnet werden, halte dies doch ebenfalls ein.
Wie du bereits weisst, ist TypeScript eine typisierte Programmiersprache, welche auf JavaScript aufbaut. In dem du Interfaces nutzt, definierst du im Code VertrΓ€ge (Strukturen) fΓΌr Daten. Somit stellst du sicher, das beispielsweise ein Held eine Id und einen Namen benΓΆtigt. So kannst du verhindern, dass ein Objekt ΓΌbergeben wird, welche diesen Vertrag bricht.
Das Data Binding mit Angular ist eines der Hauptvorteile des Frameworks:
Bei einer einfachen Applikation hat man Daten im Model (blau) und meist ein Template / HTML (rot) bei welchem die Daten einmalig zusammengefΓΌhrt werden und dem User in einer View (grΓΌn) dargestellt werden. Die Verschmelzung von Daten und Code passiert meist nur einmalig.
Das One-Way Data Binding ist nicht fΓΌr die Editierung oder Bearbeitung mittels Formularen geeignet. FΓΌr solche AnsprΓΌche folgt das Two-Way Data Binding.
Genau hier hat Angular seinen Vorteil. Das Data Binding in Angular synchronisiert das Model mit der View und umgekehrt. So kann ein Wert in der View geΓ€ndert werden und gleichzeitig wird der Wert im Model auch angepasst. Umgekehrt natΓΌrlich auch, siehe Grafik rechts. Diese stΓ€ndige Zweiweg-Synchronisation nennt man Two-Way Data Binding.
DafΓΌr gibt es zwei gΓ€ngige Arten dies zu ermΓΆglichen:
Var 1 (mit Bedacht verwenden): Du bindest dein Formular Feld an eine Funktion, welche bei der AusfΓΌhrung deinen Wert aktualisiert
Durch das binden an eine Funktion wird die ChangeDetection von Angular sehr hΓ€ufig getriggert, wenn du in der changeUsername Methode ein console.log einfΓΌgst, siehst du es.
Variante 2 (empfohlen): Die Verwendung von ngModel
ngModel
erlaubt es, eine Variable an ein Input-Feld in der App zu binden. Dies funktioniert nicht nur mit Textfelder (Inputs) sondern auch mit Radios, Selects, usw.
Nun binden wir den Namen des Helden an das Textfeld, so dass bei jeder Γnderung im Formular das Property im Hintergrund geupdated wird.
Filter resp. auch Pipes genannt kΓΆnnen in Angular hinzugefΓΌgt werden um Daten zu formatieren oder sortieren. Anbei eine Auflistung der wichtigsten FiltermΓΆglichkeiten welche dir Angular bereits mitbringt:
currency
Formatiert eine Nummer zu einem WΓ€hrungs-Format
date
Formatiert ein Datum zu einem speziellen Format
json
Formatiert ein Objekt zu einem JSON string.
lowercase
Formatiert ein String zu kleinbuchstaben
uppercase
Formatiert ein String zu GROSSBUCHSTABEN.
number
Formatiert einen String in eine Zahl
async
Abonniert einen Observable oder ein Promise und gibt den letzten Wert zurΓΌck, den es ausgegeben hat. Sie dazu mehr unter: https://angular.io/api/common/AsyncPipe
Beispiel:
Output: ICHBINEINCAMELCASETEXT
Du kannst jetzt bereits einen Helden erstellt und kannst dessen Namen Γ€ndern. Jeder Held hat jedoch ebenfalls noch eine Superkraft. Dieser soll ebenso angezeigt und editierbar gemacht werden.
Passe dein Interface an, die Superkraft hat den Datentyp string
FΓΌge der Heldin bei der Deklaration eine Superkraft hinzu
Erstelle ein zusΓ€tzliche Textfeld und binde die Superkraft daran
Wir haben vorher zwei verschiedene Varianten angeschaut wie du Daten binden kannst, fΓΌr welche entscheidest du dich?