2016-11-14 77 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'; 
相關問題