È 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?
8
A
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');
}
// ...
}
Potresti incollare il codice che recupera la memoria locale per favore? –
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