可观察的<string> .switchMap不是函数

时间:2017-12-06 12:46:38

标签: angular typescript rxjs rxjs5

我将应用程序从Angular 4升级到Angular 5,并在服务中包含以下代码

loadRefData(): Observable<RefData> {
    return this.participant$.switchMap((role) => {
      return this.http.get(`${this.API_URL}/${role}/participantGroups/refdata`)
        .map(refData => refData as RefData);
});

由于Angular 5满足RxJS 5.5.2的最低要求,我将其转换为使用带有.pipe()运算符的lettable运算符。

我以为我能做到这一点

loadRefData(): Observable<RefData> {
    return this.participant$.switchMap((role) => {
      return this.http.get(`${this.API_URL}/${role}/participantGroups/refdata`)
        .pipe(
            map(refData => refData as RefData);
        );
});

但我收到错误TypeError: this.participant$.switchMap is not a function。但是我没有从typescript编译器中获得编译错误。

this.participant$的类型为Observable<string>,除非我弄错了,否则我应该可以对其执行switchMap

我错过了什么?

这是typescript@^2.6.1rxjs@^5.5.2

编辑: 我刚刚注意到this.participant$填充的ngrx\store.select类型为Store<string>

1 个答案:

答案 0 :(得分:-1)

引自Angulars博客的报价,这可能对你有帮助。

  

HttpClient的

     

在版本4.3中,我们将@angular/common中的HttpClient作为较小的,   在Angular中制作Web请求的更简单,更强大的方法。新的   HttpClient得到了开发人员的一致好评,所以我们现在   为所有应用程序推荐HttpClient,并弃用   以前的@angular/http图书馆。

     

要更新为HttpClient,您需要将HttpModule替换为   每个模块中来自HttpClientModule的{​​{1}},   注入HttpClient服务,并删除任何@angular/common/http   电话,不再需要。

来源:Angular 5