2016-11-14 94 views
54

我需要将数据存储在浏览器的会话中并检索数据,直到会话退出。你如何在Angular 2中使用本地和会话存储?Angular 2中的本地存储

+5

的可能的复制[如何在本地或会话存储令牌存储在角2?](http://stackoverflow.com/问题/ 39840457/how-to-store-token-in-local-or-session-storage-in-angular-2) –

回答

7

使用Angular2 @LocalStorage模块,它被描述为:

这一点Angular2 /打字稿装饰使它超级容易保存 和使用HTML5' 的localStorage在你的指令(类 属性)自动恢复变量状态。

如果需要使用Cookie,你应该看看: 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"添加到您的tsconfig.json中的"lib"阵列。

+0

typescript是适合我的。你有没有找到解决方法,而不必使用列出的其他答案的npm? – Winnemucca

+0

@Winnemucca *“throwing fits”*不是一个有用的问题陈述。我不记得除了Angular CLI包含的内容外,还增加了什么。 – jonrsharpe

+0

我很抱歉。我不得不进入我的ts.config文件来解决它。 “lib”:[ “es2016”, “dom” ]。你有没有添加“dom”? – Winnemucca

4

正如上面所说的,应该是:localStorageService.set('key', 'value');localStorageService.get('key');

+0

它为我的角4项目工作,我想感谢你为我节省时间。 –

+1

在api web上没有找到关于localStorageService的文档,我可以在这里找到它? – stackdave

29

要存储在本地存储数据,

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

确保字符串化的值,例如,如果你有一个对象
localStorage.setItem(itemName, JSON.stringify(itemData));

或个别键值对
localStorage.setItem('currentUser', JSON.stringify({ token: token, name: name }));

并且从本地存储中检索数据
user = JSON.parse(localStorage.getItem(currentUser));

+0

感谢JSON解析提示! – nosuic

+1

我很高兴我能帮到 –

3

我们可以很容易地使用localStorage来设置数据和接收数据。

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