有没有办法使用RxJS跟踪特定对象的变化?基于我的研究,曾经有一个名为Observable.ofObjectChanges()的方法来创建一个跟踪对象变化的observable,但看起来已经弃用了。
我已经尝试过使用Object.from和Object.of,但是当特定对象更新时似乎都没有触发。
任何见解都表示赞赏!
答案 0 :(得分:1)
您可以为要监视的属性添加自定义setter,通知RxJS BehaviorSubject,然后您订阅该主题以侦听更改。
这样的事情:
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
class MyClass
{
changesSubject : BehaviorSubject<any> = new BehaviorSubject();
_myprop : any;
public set myprop(val : any) {
this.changesSubject.next(val);
this._myprop = val;
}
}
let myobj = new MyClass();
myobj.changesSubject.subscribe((val) => console.log(val));
myobj.myprop = "this should trigger a change detection";
答案 1 :(得分:1)
使用Observable包裹BehaviourSubject并收听Observable。
private _aStringArry: BehaviorSubject<string[]> = new BehaviorSubject(null);
public aStringArray: Observable<string[]> = this._aStringArry.asObservable();
setStringArray(stringArray: string[]): void {
this._aStringArry.next(stringArray);
}
订阅aStringArray进行更改。我建议这样做,因为在某些情况下,除非包含在Observable中,否则BehaviorSubjects会抛出Promise拒绝。