OPV*_*OPV 3 rxjs typescript angular
我已声明以下变量:
public filter: IFilterWeekScheduleClassShort = {};
Run Code Online (Sandbox Code Playgroud)
如何订阅更改(监听对象过滤器)?
我试过这个:
private filter: IFilterWeekScheduleClassShort = {};
private filterChanges: BehaviorSubject<IFilterWeekScheduleClassShort> = new BehaviorSubject(this.filter);
this.filterChanges.subscribe((model) => {
console.log(model);
});
Run Code Online (Sandbox Code Playgroud)
好吗?
我的最终代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
订阅:
this.filter.subscribe(model => {
console.log(model);
});
Run Code Online (Sandbox Code Playgroud)
我从表单中做出的更改:
[(ngModel)]="_filter.teacherId"
Run Code Online (Sandbox Code Playgroud)
小智 7
做一个二传手
private _filter: IFilterWeekScheduleClassShort = {};
set filter(value) {
this.doSomethingOnVariableChange(value);
this._filter = value;
}
Run Code Online (Sandbox Code Playgroud)
现在你可以像这样使用它
this.filter = 'x';
Run Code Online (Sandbox Code Playgroud)
并且doSomethingOnVariableChange将调用您的函数'x'.
有一个可观察的:
private _filter: IFilterWeekScheduleClassShort = {};
private _filter$ = new BehaviorSubject(this._filter);
set filter(value) {
this._filter = value;
this._filter$.next(this._filter);
}
get filter() {
return this._filter$.asObservable();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4304 次 |
| 最近记录: |