【问题标题】:Create filtered Subject to Observable in Angular在 Angular 中为 Observable 创建过滤的主题
【发布时间】:2018-05-23 01:40:41
【问题描述】:

您好,我有一个私人Subject,我不想公开,所以我从单个Subject 创建不同的Observables:

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,不需要调用asObservable吗?

标签: angular rxjs observable behaviorsubject


【解决方案1】:

ObservableObservable.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) } );

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2020-09-03
    • 1970-01-01
    • 2021-06-16
    • 2016-05-26
    • 2016-12-31
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多