【问题标题】:subscribing to an observable inside a behviorSubject: getting error订阅 behviorSubject 中的 observable:出现错误
【发布时间】: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 语句。

标签: angular behaviorsubject


【解决方案1】:

getMyOrderList 缺少 return 语句,因此抱怨类型“void”。

getMyOrderList(){
  return this.courseService.getMyOrderList(this.user.uid).snapshotChanges().pipe(first());
}

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 2017-10-10
    • 2017-11-25
    • 2020-04-07
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多