2016-06-27 11 views
8

Ich konnte ein Authentifizierungs-Token in localstorage des Browsers speichern, aber ich konnte es nicht als Zeichenfolge abrufen. Ich kann keine Beispiele finden, wie das geht.Wie kann ich Daten vom lokalen Angular2-Speicher speichern und abrufen?

+0

Könnten Sie Ihren Code einfügen, der den lokalen Speicher abruft? –

+0

Es gibt noch eine andere Frage, die das empfiehlt, einen Dienst und Observables zu verwenden, um Änderungen an localStorage-Elementen verfolgen zu können: http://stackoverflow.com/questions/35397198/how-can-i-watch-for-changes- to-localstorage-in-angular2 – Harry

Antwort

20

Sie selbst einen Dienst schreiben konnte die Serialisierung und Deserialisierung zu kapseln:

export class StorageService { 
    write(key: string, value: any) { 
     if (value) { 
      value = JSON.stringify(value); 
     } 
     localStorage.setItem(key, value); 
    } 

    read<T>(key: string): T { 
     let value: string = localStorage.getItem(key); 

     if (value && value != "undefined" && value != "null") { 
      return <T>JSON.parse(value); 
     } 

     return null; 
    } 
} 

Fügen Sie es zu Ihrem Provider entweder im bootstrap Aufruf:

bootstrap(App, [ ..., StorageService]); 

oder in Ihrer Stammkomponente:

@Component({ 
    // ... 
    providers: [ ..., StorageService] 
}) 
export class App { 
    // ... 
} 

Dann in der Komponente, wo Sie es brauchen, injizieren Sie es einfach in t er Konstruktor:

export class SomeComponent { 
    private someToken: string; 

    constructor(private storageService: StorageService) { 
     someToken = this.storageService.read<string>('my-token'); 
    } 

    // ... 
} 
+0

'lesen (key: string): T {' sollte 'gelesen werden (key: T): T {' ... richtig? – Helzgate

+0

Nein, 'T' ist der Typ des Wertes. Der Schlüssel ist eine Zeichenkette - der Name des gespeicherten Wertes. :) – rinukkusu

+0

Es gibt null –