1
我正在使用@angular v4.0.3和webpack 2.2.0。如何在角度通用中使用localStorage?
它工作正常使用Auler後,但因爲我包括localStorage它停止工作。 有沒有什麼辦法讓它工作或任何模塊的本地存儲角度通用
我正在使用@angular v4.0.3和webpack 2.2.0。如何在角度通用中使用localStorage?
它工作正常使用Auler後,但因爲我包括localStorage它停止工作。 有沒有什麼辦法讓它工作或任何模塊的本地存儲角度通用
一個好方法是使localStorage
注射併爲其提供不同的實現。
一個抽象類,反映Storage
API可以用作標記:
export abstract class LocalStorage {
readonly length: number;
abstract clear(): void;
abstract getItem(key: string): string | null;
abstract key(index: number): string | null;
abstract removeItem(key: string): void;
abstract setItem(key: string, data: string): void;
[key: string]: any;
[index: number]: string;
}
那麼對於瀏覽器應用程序模塊是
export function localStorageFactory() {
return localStorage;
}
...
{ provide: LocalStorage, useFactory: localStorageFactory }
而對於服務器應用程序模塊localStorage
可以用一些手段予以取代,如用於存儲器內存儲的node-storage-shim
:
{ provide: LocalStorage, useClass: StorageShim }
使用DI而不是全局持久存儲也使測試更容易。
感謝estus,現在我只是用platformID創建一個工作,因爲我並沒有將大量數據存儲在一個令牌中。我也會嘗試這個解決方案。 –
是的,提供商只是一個更乾淨的方式來做到這一點。當然,platformID可以在提供程序中使用,但這隻會導致在瀏覽器包中使用StorageShim,而您並不需要它。 – estus