来自switchMap的BehaviorSubject然后getValue不是函数错误

时间:2017-07-14 04:57:56

标签: angular rxjs typescript-typings behaviorsubject switchmap

这是我的班级代码

img is not None

这是来自服务的代码

this.product$ = <BehaviorSubject<Product>>this.route.params.switchMap(
  (params): BehaviorSubject<Product> =>
   this.productService.getProduct(params['_id'])
);

我声明类型,也是演员类型,但是当我写

  getProduct(_id: string): BehaviorSubject<Product> {
    const bs = new BehaviorSubject<Product>
                   (ProductService.initializeProduct());
    if (_id !== '0') {
      this.productSub = this.databaseService.getProduct(_id).subscribe(
        product => {
        bs.next(product);
        }
      );
    }
    return bs;
  }

我收到此错误:

ERROR TypeError:this.product $ .getValue不是函数

感谢

1 个答案:

答案 0 :(得分:2)

这不是switchMap - 和RxJS一般 - 的工作方式。运算符返回的可观察量取决于调用运算符的可观察量。所述observable可以实现lift以返回相同类型的可观察实例。

您对switchMap的调用结果将从this.route.params可观察对象中解除。它不是BehaviorSubject,也没有getValue方法。