在 Angular 中创建过滤的 Subject to Observable
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.filter
返回一个 Observable
。所以不需要调用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) } );
您好,我有一个我不想公开的私人 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.filter
返回一个 Observable
。所以不需要调用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) } );