我需要在浏览器的会话中存储数据并检索数据,直到会话退出。你如何在 Angular 2 中使用本地和会话存储?
如何在 Angular 中使用本地存储
标准localStorage
API应该可用,只需执行例如:
localStorage.setItem('whatever', 'something');
请注意,如果您还没有它,则需要将其添加"dom"
到"lib"
您的数组中tsconfig.json
。
如何从 localStorage 存储、检索和删除数据:
// General syntax for storing data
localStorage.setItem('key', 'value');
// Also note that both the key & the value has to be strings.
// So we stringify the value(if it's an object) before setting it.
// So, if you have an object that you want to save, stringify it like this
let data = {
'token': 'token',
'name': 'name'
};
localStorage.setItem('myLSkey', JSON.stringify(data));
// OR for individual key-value pairs
localStorage.setItem('myLSkey', JSON.stringify({
'token': 'token',
'name': 'name'
}));
// To retrieve the data & save it to an existing variable
data = JSON.parse(localStorage.getItem('myLSkey'));
// To remove a value/item from localStorage
localStorage.removeItem("myLSkey");
提示:
您还可以为您的 angular 应用程序使用一个包,该包基于本机 localStorage API(我们在上面使用)来实现这一点,您不必担心字符串化和解析。查看此包以获取 angular 5 及更高版本。@ngx-pwa/local-storage
你也可以在谷歌上快速搜索一下angular local storage,并找到一个包含更多 Github 星等的包。
查看此页面以了解有关 Web Storage API 的更多信息。
保存到本地存储:
localStorage.setItem('key', value);
对于具有属性的对象:
localStorage.setItem('key', JSON.stringify(object));
从本地存储获取:
localStorage.getItem('key');
对于对象:
JSON.parse(localStorage.getItem('key'));
localStorage 对象将数据保存为字符串并检索为字符串。如果值是存储为字符串的对象,则需要解析所需的输出。例如parseInt(localStorage.getItem('key'));
最好使用框架提供的 localStroage 而不是 3rd 方库 localStorageService 或其他任何东西,因为它减少了您的项目大小。
这是一个简单服务的示例,它使用 localStorage 来持久化数据:
import { Injectable } from '@angular/core';
@Injectable()
export class PersistanceService {
constructor() {}
set(key: string, data: any): void {
try {
localStorage.setItem(key, JSON.stringify(data));
} catch (e) {
console.error('Error saving to localStorage', e);
}
}
get(key: string) {
try {
return JSON.parse(localStorage.getItem(key));
} catch (e) {
console.error('Error getting data from localStorage', e);
return null;
}
}
}
要使用此服务,请像往常一样在应用程序的某个module中提供它,例如在核心module中。然后像这样使用:
import { Injectable } from '@angular/core';
@Injectable()
export class SomeOtherService {
constructor(private persister: PersistanceService) {}
someMethod() {
const myData = {foo: 'bar'};
persister.set('SOME_KEY', myData);
}
someOtherMethod() {
const myData = persister.get('SOME_KEY');
}
}
使用Angular2 @LocalStoragemodule,其描述为:
这个小小的 Angular2/typescript 装饰器使得使用 HTML5'LocalStorage 在你的指令(类属性)中自动保存和恢复变量状态变得非常容易。
如果你需要使用cookies,你应该看看:https : //www.npmjs.com/package/angular2-cookie