检测本地存储变化并在页面上显示而无需重新加载
Detect local storage changes and show on page without reloading
我有一个问题 angular,ionic 4 localstorage.When 我将数据从一个页面保存到 localstorage,并想将数据显示到另一个页面,我需要将页面重新加载到做到这一点 work.I 考虑检查我想显示的页面中的本地存储更改 data.Do 你知道我如何检测 angular 7,ionic 4 中本地存储的更改吗?
我认为你应该使用 rxjs 流来完成这个。
private storageSub= new Subject<string>();
...
watchStorage(): Observable<any> {
return this.storageSub.asObservable();
}
setItem(key: string, data: any) {
localStorage.setItem(key, data);
this.storageSub.next('added');
}
removeItem(key) {
localStorage.removeItem(key);
this.storageSub.next('removed');
}
要检查 storage
中的值是否已更改,您可以将 listener
添加到 event of the storage
,如下所示:
document.addEventListener('storage', (e) => {
if(e.key === 'theyKeyYouWant') {
// Do whatever you want
}
});
您可以在 属性 setter 和 getter 中设置和检索值 to/from localStorage 的服务。
模板绑定到属性后,您的相应组件将根据更改检测进行更新。
例如,这是您要在 localStorage 中设置的 属性 服务。
import { Injectable } from '@angular/core';
@Injectable()
export class SetStorageService {
private _localItem: string = '';
constructor() { }
set localItem(value: string) {
this._localItem = value;
localStorage.setItem('localItem', value);
}
get localItem() {
return this._localItem = localStorage.getItem('localItem')
}
}
你的组件如下:
export class AppComponent {
name = 'Angular';
private _item: string = ""
constructor(private _storageService: SetStorageService) {}
set item(value) {
this._item = value;
this._storageService.localItem = value;
}
get item() {
return this._item = this._storageService.localItem;
}
addValue() {
this.item = "New Value"
}
}
您的视图将绑定到最终从 localStorage(通过服务)获取数据的 属性。
<p>
Item in App component - <b>{{item}}</b>
</p>
在此处查看示例:
https://stackblitz.com/edit/angular-pgdz8e?file=src%2Fapp%2Fapp.component.ts
localStorage.setItem(key, value);
localStorage.getItem(key);
要删除您可以使用
ngOnDestroy() {
localStorage.removeItem('key');
}
我有一个问题 angular,ionic 4 localstorage.When 我将数据从一个页面保存到 localstorage,并想将数据显示到另一个页面,我需要将页面重新加载到做到这一点 work.I 考虑检查我想显示的页面中的本地存储更改 data.Do 你知道我如何检测 angular 7,ionic 4 中本地存储的更改吗?
我认为你应该使用 rxjs 流来完成这个。
private storageSub= new Subject<string>();
...
watchStorage(): Observable<any> {
return this.storageSub.asObservable();
}
setItem(key: string, data: any) {
localStorage.setItem(key, data);
this.storageSub.next('added');
}
removeItem(key) {
localStorage.removeItem(key);
this.storageSub.next('removed');
}
要检查 storage
中的值是否已更改,您可以将 listener
添加到 event of the storage
,如下所示:
document.addEventListener('storage', (e) => {
if(e.key === 'theyKeyYouWant') {
// Do whatever you want
}
});
您可以在 属性 setter 和 getter 中设置和检索值 to/from localStorage 的服务。
模板绑定到属性后,您的相应组件将根据更改检测进行更新。
例如,这是您要在 localStorage 中设置的 属性 服务。
import { Injectable } from '@angular/core';
@Injectable()
export class SetStorageService {
private _localItem: string = '';
constructor() { }
set localItem(value: string) {
this._localItem = value;
localStorage.setItem('localItem', value);
}
get localItem() {
return this._localItem = localStorage.getItem('localItem')
}
}
你的组件如下:
export class AppComponent {
name = 'Angular';
private _item: string = ""
constructor(private _storageService: SetStorageService) {}
set item(value) {
this._item = value;
this._storageService.localItem = value;
}
get item() {
return this._item = this._storageService.localItem;
}
addValue() {
this.item = "New Value"
}
}
您的视图将绑定到最终从 localStorage(通过服务)获取数据的 属性。
<p>
Item in App component - <b>{{item}}</b>
</p>
在此处查看示例:
https://stackblitz.com/edit/angular-pgdz8e?file=src%2Fapp%2Fapp.component.ts
localStorage.setItem(key, value);
localStorage.getItem(key);
要删除您可以使用
ngOnDestroy() {
localStorage.removeItem('key');
}