所以基本上我想要实现的是watching/listening
objects
使用array
和{{injectable
service
内setters
内的getters
更改1}}操纵它的数据
例如
@Injectable()
export class StorageService {
protected items: Array<any> = [];
constructor(private storage: Storage) {
this.storage.ready().then(() => {
StorageService.getGetters().forEach((get) => {
this.storage.get(get).then(res => this.items[get] = res);
});
});
}
public static getGetters(): string[] {
return Object.keys(this.prototype).filter(name => {
return typeof Object.getOwnPropertyDescriptor(this.prototype, name)["get"] === "function"
});
}
get Storage() {
return this.storage;
};
ClearStorage() {
this.storage.clear();
}
protected Setter(key: string, value: any): void {
this.items[key] = value;
this.storage.set(key, value);
}
protected Getter(key: string): any {
return this.items[key];
}
set User(value: User) {
this.Setter('User', value);
}
get User(): User {
return this.Getter('User');
}
}
其中User
interface
是:
export interface User {
id: number;
role_id: number;
name: string;
email?: string;
}
现在在任何component
或service/provider
我可以DI
我的StorageService
,因此我可以访问User
getter
。
这样:
storage.User.name = 'testing';
现在name
已更改,但我无法跟踪,因此我可以更新我的存储空间!
更新我的storage
我会这样做:
storage.User.name = 'testing';
storage.User = storage.User;
哪个有效,但我需要一种方法来监听object
properties
发生的任何变化,这样我就可以更新我的存储...
我搜索了很多,我找到的只是watching
components
@Input()
,这在我的情况下不起作用。
希望我明白我的观点。