2017-09-06 3 views
0

Ich habe einige Objekte in LocalStorage und in ngOnInit Hook Ich empfange diese Daten an das Array, die ich in der Vorlage mit * ngFor anzeigen. Wie kann ich Änderungen in LocalStorage überwachen und die Ansicht automatisch aktualisieren?Achten Sie auf Änderungen in LocalStorage angular2

Antwort

2

Was Sie wollen, ist ein Thema. Schauen Sie sich hier die Dokumentation (https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/subjects/subject.md)

For a quick example, something like this: 
    @Injectable() 
export class StorageService { 
    ... 
    private storageSub= new Subject<boolean>(); 
    ... 

    watchStorage(): Observable<any> { 
    return this.storageSub.asObservable(); 
    } 

    setItem(key: string, data: any) { 
    localStorage.setItem(key, data); 
    this.storageSub.next('changed'); 
    } 

    removeItem(key) { 
    localStorage.removeItem(key); 
    this.storageSub.next('changed'); 
    } 
} 

Inside Component 

constructor(private storageService: StorageService ){} 
ngOnInit() { 
this.storageService.watchStorage().subscribe((data:string) => { 
// this will call whenever your localStorage data changes 
// use localStorage code here and set your data here for ngFor 
}) 

} 
+0

Letztlich ist diese Lösung sauberer als meine, wenn Sie auf alles zählen kann, die verwendet local tut dies durch diesen Dienst. Sie haben jedoch einige Probleme mit dem Code. Der Typ des Betreffs ist boolesch, aber Sie übergeben Strings an next(), und da Sie Strings übergeben, könnte es sich auch um den Schlüssel des geänderten Elements handeln. Es kann auch ein Element festgelegt werden, das mit dem bereits gespeicherten Element übereinstimmt, sodass sich nichts geändert haben sollte, aber das OP kann diese Detailebene implementieren, wenn es gewünscht wird. –

+0

Vielen Dank. Funktioniert perfekt – Hubert

Verwandte Themen