繁体   English   中英

创建可过滤的主题,以可观察的角度

[英]Create filtered Subject to Observable in Angular

嗨,我有一个我不想公开的私有Subject ,所以我要从单个Subject创建不同的Observable

public numberChange$: Observable<number>;
public oddChange$: Observable<number>;
public evenChange$: Observable<number>;
private number: Subject<number>;
constructor() {
  this.number = new Subject<number>();
  this.numberChange$ = this.number.asObservable();
  this.oddChange$ = this.number.filter(n => n % 2 === 1).asObservable();
  this.evenChange$ = this.number.filter(n => n % 2 === 0).asObservable();
}

这样其他人可以在想知道号码何时更改的情况下订阅numberChange$ 如果他们只想知道更改是什么时候是奇数,则可以订阅oddChange$ evenChange$

上面的代码不起作用,因为在this.number.filter()我无法再调用asObservable() 您如何解决上面的代码以实现我所描述的内容?

Observable返回一个Observable.filter 因此,无需调用asObservable() ,只需订阅返回的值即可。

this.number = new Subject<number>();
this.numberChange$ = this.number.asObservable();
this.oddChange$ = this.number.filter(n => n % 2 === 1);
this.evenChange$ = this.number.filter(n => n % 2 === 0);
this.oddChange$.subscribe((x) => { console.log(x) } );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM