M294 Block 03¶
Inhaltsverzeichnis¶
Data Binding¶
Data Binding bedeutete die Kommunikation zwischen der Komponente .ts und der Vorlage .html.
Angular kennt 3 Hauptarten von Data Binding:
- One-Way Binding - Component to view (TS-HTML)
String Interpolation
{{ name }}
Zeigt Werte aus der Komponente in HTML an.
Property Binding
[src]="imageUrl"
[class.active]="isActive"
[style.color]="color"
Setzt HTML-Eigenschaften dynamisch anhand von Variablen.
- One-Way Binding - View to Component (HTML to TS)
Wenn der Nutzer klickt, wird eine Funktion in TypeScript ausgeführt.
- Two-Way Binding (beidseitige Datenweitergabe)
Daten werden automatisch in beide Richtungen synchronisiert.
ngModel
[(ngModel)]="value"
Änderungen im HTML und in TypeScript bleiben immer synchron.
Two-way-Binding in Angular¶
Das Two-Way-Binding in Angular ermöglicht es Ihnen, Daten in beide Richtungen zu synchronisieren: zwischen der Komponente (TypeScript-Datei) und der Vorlage (HTML-Datei).
Das bedeutet:
-
Wenn Sie in einem Eingabefeld der Webseite etwas ändern, wird die Änderung automatisch in der Komponente gespeichert.
-
Wenn die Komponente die Daten ändert, wird dies sofort in der Webseite angezeigt.
Voraussetzung: Das FormsModule
Um das Two-Way-Binding zu verwenden, benötigen Sie die ngModel-Direktive, die Teil des FormsModule ist. Das FormsModule müssen Sie zuerst in Ihrer App importieren, damit ngModel funktioniert.
Die Schreibweise [(ngModel)] sieht aus wie eine Kombination aus
[ ] (Property-Binding) und
( ) (Event-Binding).
Technisch ist es eine Kurzschreibweise für:
[ngModel]="name"
(ngModelChange)="name = $event"
Angular verbindet diese beiden automatisch – deshalb spricht man von Two-Way-Binding.
BEISPIEL
-
HTML (Vorlage)
Hello, {{name}}!
-
TypeScript (Komponente
- APP Module (Registrierung)
Damit das funktioniert, müssen Sie im AppModule das FormsModule hinzufügen:
import { FormsModule } from '@angular/forms';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, FormsModule],
})
export class AppModule {}
Was passiert hier?
- Die Variable name wird in der Komponente definiert.
- Diese Variable ist mit dem Eingabefeld (input) verbunden. Wenn Sie etwas in das Eingabefeld schreiben, wird die Variable name automatisch angepasst.
- Gleichzeitig zeigt der {{name}}-Platzhalter in der Vorlage den aktuellen Wert der Variable an.
Warum ist das praktisch?
Das Two-Way-Binding spart Ihnen Zeit, da Sie keine zusätzlichen Funktionen schreiben müssen, um die Daten zwischen HTML und TypeScript zu synchronisieren. Alles passiert automatisch!
Input Properties¶
Links für Code: Angular - Input
Dieses Beispiel zeigt, wie ein Child Component ein Event an den Parent sendet und wie der Parent darauf reagiert.
Übersicht¶
Was lernst du hier?
- Ein Child kann ein eigenes Event definieren.
- Der Parent kann dieses Event abonnieren.
- Werte können vom Child nach oben in den Parent geschickt werden.
Parent Component (App)¶
import {Component} from '@angular/core';
import {Child} from './child';
@Component({
selector: 'app-root',
template: `<app-child (addItemEvent)="addItem($event)"/> <p>🐢 all the way down {{ items.length }}</p>` ,
imports: [Child],
})
export class App {
items = new Array();
addItem(item: string) {
this.items.push(item);
}
}
!!! success "Erklärung"
- Der Parent bindet das Child ein.
- Das Event addItemEvent vom Child wird mit (addItemEvent)="addItem($event)" abonniert.
- $event enthält den Wert aus dem Child.
- Die Funktion addItem fügt das empfangene Item in die Liste ein.
## Child Component
s
Erklärung
- Das Child definiert ein eigenes Output Event: addItemEvent.
- output() bedeutet, dass dieses Event einen String sendet.
- Beim Klicken des Buttons wird addItem() ausgeführt.
- addItemEvent.emit('🐢') sendet das Event und den Wert nach oben.
Ablauf¶
Child Button Klick
↓
addItem() wird ausgeführt
↓
addItemEvent.emit('🐢')
↓
Parent empfängt das Event
↓
Parent führt addItem('🐢') aus
↓
items.length erhöht sich
Kurzfassung
- Child sendet Event → Parent empfängt Event.
- Kommunikation von unten nach oben.
- Liste im Parent wächst bei jedem Klick.
Output Properties¶
Links für Code: Angular - Output
Attribute Directives¶
Attribute Directives sind Anweisungen, die das Aussehen oder Verhalten von HTML-Elementen verändern.
Angular bringt einige wichtige Attribute Directives mit:
-
[NgStyle] → damit kann ich ein HTML-Element dynamisch stylen
(z. B. abhängig von einer Bedingung) -
[NgClass] → damit kann ich einem HTML-Element dynamisch CSS-Klassen zuweisen
Wir werden uns diese Directives später mit Beispielen genauer anschauen.

