2016-06-27 285 views
8

我能夠在瀏覽器的localstorage中存儲身份驗證令牌,但我無法將其作爲字符串檢索。我找不到有關如何做到這一點的任何示例。如何從Angular2本地存儲中保存和檢索數據?

+0

你可以粘貼你的代碼來檢索本地存儲嗎? –

+0

還有一個問題需要解決,建議使用服務和Observable,以便能夠跟蹤對localStorage項目的更改:http://stackoverflow.com/questions/35397198/how-can-i-watch-for-changes- (key:字符串):T {'should be'(key:T):T {'... correct?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 Helzgate

+0

不,「T」是值的類型。關鍵是一個字符串 - 存儲值的名稱。 :) – rinukkusu

+0

它給零 –

相關問題