2016-11-14 6 views
54

Мне нужно хранить данные в сеансе браузера и извлекать данные до выхода сеанса. Как вы используете локальное и сеансовое хранилище в Angular 2?Локальное хранилище в Angular 2

+5

Возможный дубликат [Как сохранить маркер в локальной или Session Storage в угловых 2?] (Http://stackoverflow.com/ questions/39840457/how-to-store-token-in-local-or-session-storage-in-angle-2) –

ответ

7

Используйте Angular2 @LocalStorage модуль, который описывается как:

Этого маленький Angular2/машинопись декоратор делает его очень легко сохранить и восстановить автоматически переменные состояния в вашей директиве (класс свойства) с использованием LocalStorage HTML5' ,

Если вам нужно использовать куки, вы должны смотреть на: https://www.npmjs.com/package/angular2-cookie

+3

В настоящее время у этого человека нет человека, поддерживающего его. – Winnemucca

+2

Преемником проекта angular2-cookie является ngx-cookie https://www.npmjs.com/package/ngx-cookie –

+0

Существует и более мощный (например, прослушивание изменений в хранилище, поддержка файлов cookie и временной памяти) [ 'NGX-store'] (https: // GitHub.com/zoomsphere/ngx-store) библиотека, совместимая с 'angular2-localstorage' –

66

Стандарт localStorage API должен быть доступен, только сделайте например .:

localStorage.setItem('whatever', 'something'); 

Это pretty widely supported.

Обратите внимание, что вам нужно будет добавить "dom" в массив "lib" в вашем tsconfig.json, если у вас его еще нет.

+0

машинописный шрифт подходит для меня. Вы нашли способ обойти это без необходимости использовать npm для других ответов? – Winnemucca

+0

@Winnemucca * "throwing fits" * не является полезной постановкой задачи. Я не помню, чтобы добавлять что-либо помимо того, что включает в себя Угловая CLI. – jonrsharpe

+0

Прошу прощения. Мне нужно было войти в файл ts.config, чтобы исправить это. "lib": [ "es2016", "dom" ]. У вас уже есть «dom»? – Winnemucca

4

Как было сказано выше, должно быть: localStorageService.set('key', 'value'); и localStorageService.get('key');

+0

Его работа для меня на моем угловом проекте 4, и я хочу поблагодарить вас за то, что сэкономил мое время. –

+1

не нашли документ о localStorageService на веб-сайте api, где я могу это найти? – stackdave

29

Для хранения данных в локальной системе хранения данных,

localStorage.setItem('key', 'value'); 

Убедитесь, что stringify значение, например, если у вас есть объект
localStorage.setItem(itemName, JSON.stringify(itemData));

ИЛИ для отдельных пар ключ-значение
localStorage.setItem('currentUser', JSON.stringify({ token: token, name: name }));

И для получение данных из localstorage
user = JSON.parse(localStorage.getItem(currentUser));

+0

Спасибо за советы JSON по разбору! – nosuic

+1

Я рад, что смог помочь –

3

Мы можем легко использовать локальную хранилище для установки данных и получения данных.

Note: it works with both angular2 and angular 4 

//set the data 
localStorage.setItem(key, value); //syntax example 
localStorage.setItem('tokenKey', response.json().token); 

//get the data 
localStorage.getItem('tokenKey') 

//confirm if token is exist or not 
return localStorage.getItem('tokenKey') != null; 
1
Local Storage Set Item 
Syntax:- 
    localStorage.setItem(key,value); 
    localStorage.getItem(key); 
Example:- 
    localStorage.setItem("name","Muthu"); 
    if(localStorage){ //it checks browser support local storage or not 
    let Name=localStorage.getItem("name"); 
    if(Name!=null){ // it checks values here or not to the variable 
     //do some stuff here... 
    } 
    } 
also you can use 
    localStorage.setItem("name", JSON.stringify("Muthu")); 

Session Storage Set Item 
Syntax:- 
    sessionStorage.setItem(key,value); 
    sessionStorage.getItem(key); 
Example:- 
    sessionStorage.setItem("name","Muthu"); 
    if(sessionStorage){ //it checks browser support session storage/not 
    let Name=sessionStorage.getItem("name"); 
    if(Name!=null){ // it checks values here or not to the variable 
     //do some stuff here... 
    } 
    } 
also you can use 
    sessionStorage.setItem("name", JSON.stringify("Muthu")); 

хранение и извлечение данных легко

3

Вы можете использовать декоратор для обозначения переменных, которые вы хотите сохранить.

export class SomeComponent { 

    @LocalStorage 
    public variableToBeStored: string; 

} 

Пример, как этого достичь в этой статье: https://filipmolcik.com/angular-2-local-storage/.

+0

замечательное решение –

1
Save into LocalStorage: 
    localStorage.setItem("key",value); 

    For objects with properties: 
    localStorage.setItem("key",JSON.Stringify(object)); 

    Get From Local Storage: 
    localStorage.getItem("key"); 

    For objects: 
    JSON.parse(localStorage.getItem("key")); 

    This will save as string and retrieve as string. You need to Prase desired output 
    if value is non-string. 
    e.g. parseInt(localStorage.getItem("key")); 

** It is better to use framework provided localStroage instead of 3rd party library localStorageService or anything else. 
0

Установить "угловой-2-местное-хранилище"

import { LocalStorageService } from 'angular-2-local-storage'; 

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

  • Нет связанных вопросов^_^