🧩 Angular Multi-Step Forms – Stepper, Dynamic Flow & State Handling

Mehrschritt-Formulare sind oft das Herzstück komplexer Prozesse: Onboarding, Konfiguration, Buchung, etc.
In diesem Beitrag lernst du, wie du cleane, dynamische und UX-freundliche Stepper baust – mit Angular & Signals.


🧱 1. Struktur & State-Handling

Nutze ein zentrales Signal für den Schritt:

readonly step = signal(0);

nextStep() { this.step.update((s) => s + 1); }
prevStep() { this.step.update((s) => s - 1); }

Optional: Step-State als Enum + SignalStore


🧩 2. Stepper-Komponente

<ng-container [ngSwitch]="step()">
  <app-step-personal *ngSwitchCase="0" />
  <app-step-details *ngSwitchCase="1" />
  <app-step-confirm *ngSwitchCase="2" />
</ng-container>

➡ Jeder Step ist eine eigene, standalone-komponente


📦 3. Form-State zentral halten

readonly formData = signal<FormData>({
  name: '',
  email: '',
  address: '',
});

➡ Übergib @Input() in jedem Step, update mit (ngModelChange)


🔁 4. Dynamische Steps (abhängig vom Inhalt)

readonly hasCompany = signal(false);

readonly steps = computed(() => {
  return hasCompany() ? ['personal', 'company', 'confirm'] : ['personal', 'confirm'];
});

➡ Dynamischer Flow mit klarer Logik


🧪 5. Validierung & Progress

  • Jeder Step validiert nur sich selbst
  • Globaler Fortschritt z. B. mit step() / steps().length
  • Fehler mit ngIf, aria-live und Step-Markers anzeigen

🧠 6. UX Best Practices

  • Autofokus auf erstes Feld
  • Zurück-Buttons immer sichtbar
  • Zwischenspeichern lokal (localStorage, Signals)
  • Fortschrittsbalken oben
  • Confirmation Step mit Review der Eingaben

✅ Fazit

Multi-Step Forms in Angular:

  • 💡 Klarer UX-Flow
  • 📦 Zentraler Form- und Step-State
  • 🧱 Komponentisiert & wiederverwendbar
  • 🔁 Dynamisch & testbar

📍 Bald im Blog: ⚡ Signals + RxJS – Best of both worlds für reactive Power

Hast du Fragen oder ein Projekt im Kopf?

Ich freue mich auf deine Nachricht. Lass uns gemeinsam deine Vision verwirklichen!

Jetzt Kontakt aufnehmen