将Subscription赋值给Observable<EnumValue[]>时出现类型不匹配错误
问题解决:Observable类型赋值异常
你的错误根源是:subscribe()方法返回的是Subscription订阅对象,但你把它赋值给了声明为Observable<EnumValue[]>类型的this.contactLocationStates$,类型不匹配导致报错。
正确的做法是用map操作符在Observable管道内完成过滤逻辑,这样整个管道返回的仍然是Observable类型,能直接赋值:
fetchContactLocationStates() { this.contactLocationStates$ = this.enumValues$ .pipe( takeUntil(this.destroy$), map(x => x.filter((p) => p.CategoryId === EnumCategory.State)) ); }
补充说明:
- 若需要消费这个Observable的数据,再单独调用
subscribe(),比如在组件的合适生命周期或业务逻辑里:
this.contactLocationStates$.subscribe(filteredStates => { // 这里处理过滤后的状态数据 });
subscribe()的作用是触发Observable执行并接收数据,它的返回值是订阅实例,主要用来后续取消订阅(比如结合你的destroy$),不能直接赋值给Observable类型变量。
内容的提问来源于stack exchange,提问作者CorrieJanse
相关产品推荐
相关产品推荐

