2016-06-27 28 views
8

È stato possibile memorizzare un token di autenticazione nel localstorage del browser, ma non è stato possibile recuperarlo come stringa. Non riesco a trovare alcun esempio su come farlo.come salvare e recuperare i dati dalla memoria locale Angular2?

+0

Potresti incollare il codice che recupera la memoria locale per favore? –

+0

C'è un'altra domanda a questo proposito che consiglia l'utilizzo di un servizio e Observables, per essere in grado di tenere traccia delle modifiche agli elementi localStorage: http://stackoverflow.com/questions/35397198/how-can-i-watch-for-changes- to-localstorage-in-angular2 – Harry

risposta

20

Si potrebbe scrivere da soli un servizio per incapsulare la serializzazione e deserializzazione:

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; 
    } 
} 

aggiungerlo al tuo provider sia nella chiamata bootstrap:

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

o nel vostro componente principale:

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

Quindi nel componente in cui è necessario, è sufficiente iniettarlo in he constructor:

export class SomeComponent { 
    private someToken: string; 

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

    // ... 
} 
+0

'leggi (chiave: stringa): T {' dovrebbe essere 'letto (tasto: T): T {' ... corretto? – Helzgate

+0

No, 'T' è il tipo del valore. La chiave è una stringa: il nome del valore memorizzato. :) – rinukkusu

+0

Sta dando null –