gen*_*nek 12 observable typescript angular
当我编写此代码时,IDE 显示错误。
我有一个组件调用 ngOnInit 中的服务来获取数据。服务调用其他服务来获取一些数据并使用它来获取数据然后返回它。
成分:
ngOnInit() {
const token = "abc";
this.service.getContactPersons(token).subscribe(
persons => this.contactPersons = persons
);
}
Run Code Online (Sandbox Code Playgroud)
服务:
getContactPersons(token: string): Observable<ContactPerson[]> {
return this.tokenService.getParameters(token).pipe(
switchMap((data: Params) => {
return this.http.get<Properties>(
this.baseUrl + `/abc/${data.param1}/properties/${data.param2}`
);
})
).subscribe((data: Properties) => data.contactPersons);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:“‘订阅’类型缺少‘Observable’类型中的以下属性:_isScalar、源、运算符、提升以及其他 6 个属性。”
mbo*_*jko 10
subscribe不是 rxjs 的等价物then。具体来说,有了承诺,你可以做到somePromise.then(doSomething).then(doSomethingElse),但你不能做到someRxjsStream$.subscribe(doSomething).subscribe(doSomethingElse)。如果您想转换数据流,您应该使用几个可用的 rxjs 运算符之一,在您的情况下它是map:
getContactPersons(token: string): Observable<ContactPerson[]> {
return this.tokenService.getParameters(token).pipe(
switchMap((data: Params) => this.http.get<Properties>(
`${this.baseUrl}/abc/${data.param1}/properties/${data.param2}`)),
map((data: Properties) => data.contactPersons));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39130 次 |
| 最近记录: |