2016-06-27 2 views
8

Мне удалось сохранить токен аутентификации в браузере localstorage, но я не смог получить его как строку. Я не могу найти примеров того, как это сделать.Как сохранить и получить данные из локального хранилища Angular2?

+0

Не могли бы вы вставить свой код, который извлекает местное хранилище, пожалуйста? –

+0

Существует еще один вопрос, касающийся этого, который рекомендует использовать службу и Observables, чтобы отслеживать изменения в элементах localStorage: http://stackoverflow.com/questions/35397198/how-can-i-watch-for-changes- to-localstorage-in-angular2 – Harry

ответ

20

Вы могли бы написать себе услугу инкапсулировать сериализации и десериализации:

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

Добавьте его в свой поставщиков либо в bootstrap вызова:

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

или в корневой компонент:

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

Затем в компоненте, в котором это необходимо, просто введите его в t он конструктор:

export class SomeComponent { 
    private someToken: string; 

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

    // ... 
} 
+0

'read (key: string): T {' должно быть 'read (ключ: T): T {' ... correct? – Helzgate

+0

Нет, 'T' - тип значения. Ключ - это строка - имя сохраненного значения. :) – rinukkusu

+0

Он дает null –

Смежные вопросы