Angular LocalStorage Tutorial: Formular-Daten speichern und laden
Hier ist ein ausführliches Tutorial, wie du Formulardaten in Angular mithilfe von LocalStorage speichern und wieder abrufen kannst.
LocalStorage ist eine einfache Möglichkeit, Daten direkt im Browser des Benutzers zu speichern. Diese Daten bleiben auch nach dem Neuladen der Seite oder dem Schließen des Browsers erhalten.
Voraussetzungen
- Eine bestehende Angular-Anwendung.
- Grundkenntnisse in Reactive Forms.
Schritt 1: ReactiveFormsModule importieren
Um Formulare in Angular effizient zu verwalten, nutzen wir ReactiveFormsModule. Öffne deine app.module.ts und füge den Import hinzu:
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [ ... ],
imports: [
BrowserModule,
ReactiveFormsModule // Hier hinzufügen
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Schritt 2: Das Formular in der Komponente erstellen
In der Datei app.component.ts definieren wir das Formular und die Logik für den LocalStorage.
Wichtig: Da LocalStorage nur Strings speichern kann, müssen wir Objekte mit JSON.stringify() umwandeln und beim Auslesen mit JSON.parse() wieder in ein Objekt zurückführen.
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
userForm: FormGroup;
storageKey = 'user_data';
constructor() {
// Formular initialisieren
this.userForm = new FormGroup({
firstname: new FormControl(''),
lastname: new FormControl(''),
email: new FormControl('')
});
}
ngOnInit(): void {
// Beim Laden der Komponente Daten aus LocalStorage abrufen
this.loadFormData();
}
// Daten im LocalStorage speichern
saveToLocalStorage(): void {
const data = this.userForm.value;
localStorage.setItem(this.storageKey, JSON.stringify(data));
alert('Daten erfolgreich im LocalStorage gespeichert!');
}
// Daten aus LocalStorage laden
loadFormData(): void {
const savedData = localStorage.getItem(this.storageKey);
if (savedData) {
// String zurück in Objekt umwandeln und Formular befüllen
this.userForm.patchValue(JSON.parse(savedData));
}
}
// LocalStorage leeren
clearStorage(): void {
localStorage.removeItem(this.storageKey);
this.userForm.reset();
}
}
Schritt 3: Das HTML-Template erstellen
Erstelle in der app.component.html ein einfaches Formular, das an unsere userForm gebunden ist.
<div style="padding: 20px;">
<h1>Angular LocalStorage Formular</h1>
<form [formGroup]="userForm" (ngSubmit)="saveToLocalStorage()">
<div>
<label>Vorname:</label><br>
<input type="text" formControlName="firstname">
</div>
<br>
<div>
<label>Nachname:</label><br>
<input type="text" formControlName="lastname">
</div>
<br>
<div>
<label>E-Mail:</label><br>
<input type="email" formControlName="email">
</div>
<br>
<button type="submit">Daten Speichern</button>
<button type="button" (click)="clearStorage()">Speicher löschen</button>
</form>
<hr>
<h3>Aktueller Status im LocalStorage:</h3>
<p>Wenn du die Seite neu lädst, bleiben die eingegebenen Daten erhalten.</p>
</div>
Funktionsweise erklärt
- Speichern (
setItem): Wenn der Benutzer auf "Speichern" klickt, wird die FunktionsaveToLocalStorage()aufgerufen. Mitthis.userForm.valueerhalten wir ein JavaScript-Objekt. Da der LocalStorage nur Text akzeptiert, nutzen wirJSON.stringify(). - Laden (
getItem): In derngOnInit()-Methode prüfen wir, ob unter dem Schlüsseluser_databereits etwas im Browser gespeichert ist. Wenn ja, konvertieren wir den String mitJSON.parse()zurück in ein Objekt und nutzenpatchValue(), um die Formularfelder automatisch zu füllen. - Löschen (
removeItem): Um die Daten zu entfernen, nutzen wirlocalStorage.removeItem().
Tipps für die Praxis
- Sicherheit: Speichere niemals sensible Daten wie Passwörter oder Kreditkartendaten im LocalStorage, da dieser über JavaScript leicht ausgelesen werden kann (XSS-Gefahr).
- Größe: LocalStorage ist auf ca. 5MB begrenzt. Für einfache Formulare ist das völlig ausreichend.
- JSON Handling: Achte immer darauf,
JSON.parse()in einentry-catch-Block zu setzen oder vorher auf Existenz zu prüfen, um Fehler zu vermeiden, falls der Inhalt im LocalStorage kein gültiges JSON ist.