如何订阅angular-2-local-storage中的setItems $ Observable
问题描述:
我正在使用angular-2-local-storage,它具有setItems $的可观察值,我试图......用在指令下面的代码:
/** app-theme.directive.ts **/
import { Directive, ElementRef, Input } from '@angular/core';
import { UserSettings } from './core/user-settings';
import { LocalStorageService } from 'angular-2-local-storage';
@Directive({
selector: '[appTheme]'
})
export class AppThemeDirective {
constructor(el: ElementRef, localStorageService: LocalStorageService) {
localStorageService.setItems$.subscribe(function(x: any) {
console.log('subscribed', x);
});
}
}
本地存储更新,并在我的代码坚持不够好,但没有被观察到的更新并登录到控制台。我错过了任何明显的缺陷?
答
道歉,这是要罚款,但我需要阅读: https://github.com/phenomnomnominal/angular-2-local-storage/issues/31和notifyOptions添加到app.module.ts进口
LocalStorageModule.withConfig({
prefix: 'ng-starter',
storageType: 'localStorage',
notifyOptions : {setItem: true, removeItem:true}
}),
答
localStorage
和sessionStorage
已经存在于lib中,这样你就可以直接使用localStorage.setItem()和localStorage.getItem()。
mycomponent.ts
import { Directive, ElementRef, Input } from '@angular/core';
import { UserSettings } from './core/user-settings';
import { LocalStorageService } from 'angular-2-local-storage';
@Directive({
selector: '[appTheme]'
})
export class AppThemeDirective {
constructor(el: ElementRef, localStorageService: LocalStorageService) {
let data = { application: this.application };
localStorage.setItem('applicationdata', JSON.stringify(data));
var data = localStorage.getItem('applicationdata');
}
}
希望这会帮助你。
嗨 - 我没有问题的角度2本地存储第三方模块的get/set方法。只需订阅它创建的Observable,setItems $即可。将“setItem:true”添加到notifyOptions配置可以解决我的问题。 – Fewster