【发布时间】:2023-03-26 15:26:01
【问题描述】:
我已经声明了以下变量:
public filter: IFilterWeekScheduleClassShort = {};
如何订阅更改(监听对象过滤器)?
我试过了:
private filter: IFilterWeekScheduleClassShort = {};
private filterChanges: BehaviorSubject<IFilterWeekScheduleClassShort> = new BehaviorSubject(this.filter);
this.filterChanges.subscribe((model) => {
console.log(model);
});
没事吧?
我的最终代码:
public _filter: IFilterWeekScheduleClassShort = {};
private filterChanges: BehaviorSubject<IFilterWeekScheduleClassShort> = new BehaviorSubject(this._filter);
this.filter = {a: 1, b: 2}
set filter(value: any) {
this._filter = value;
this.filterChanges.next(this._filter);
}
get filter() {
return this.filterChanges.asObservable();
}
订阅:
this.filter.subscribe(model => {
console.log(model);
});
我对表单所做的更改:
[(ngModel)]="_filter.teacherId"
【问题讨论】:
-
你的最终目标是什么?可能有比订阅更改事件更好的方法(这通常是一项昂贵的操作,因为它可能会被多次调用)
-
目标是检测
filter对象中的任何变化并决定接下来要做什么 -
Subject/BehaviorSubject 允许您发布和收听更改。您可以
this.filterChanges.next(data)发布任何更改,this.filterChanges.subscribe((data)=>this.filter = data)监听任何更改
标签: angular typescript rxjs