我将应用程序从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.1
,rxjs@^5.5.2
。
编辑:
我刚刚注意到this.participant$
填充的ngrx\store.select
类型为Store<string>
。
答案 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