【发布时间】:2021-05-29 16:17:25
【问题描述】:
我正在尝试订阅 BehaviorSubject,然后订阅取决于条件的可观察对象
BehaviorSubject 是:
orderListSubject= new BehaviorSubject<any>({orderListTouched: false, orderList: []});
myAllOrders = new BehaviorSubject<OrderModel[]>([])
我有一个服务试图检查 orderListTouched 是否为假,我需要订阅另一个 observable 以将值推送到 orderList
orderListTouched 为 false 时调用的函数:
getMyOrderList(){
this.courseService.getMyOrderList(this.user.uid).snapshotChanges().pipe(first())
}
这里是我试图用来包装这个案例的函数:
listenToOrderList(){
this.courseService.orderListSubject.pipe(map(ev =>{
return ev.orderListTouched;
}), switchMap((res)=>{
if(res === false){
return this.getMyOrderList()
}if(res === true){
return this.myAllOrders
}
}
}))
}
当我这样做时,我收到一个错误:“(res:any)=> void”类型的参数不可分配给“(value:any,index:number)=> ObservableInput”类型的参数。 类型“void”不可分配给类型“ObservableInput”。
请指教!
【问题讨论】:
-
getMyOrderList()不返回任何内容。添加return语句。