angular - 如何点击 TypeScript/Angular 中的 observable 返回?
问题描述
我正在尝试在服务中创建一种方法。该方法应:
- 对 REST API 进行 GET 调用
- 更改参数的解决方案组件 (string[]) 以包含 get 调用的结果
- 返回更改后的参数。
但是,我不希望它作为可观察对象返回,因为我正在更改它在组件中返回的对象。
现在我的方法如下所示:
private GET_URL = '...';
getSolutions(dog: Dog): Dog {
let opts = new HttpParams();
//set params
this.http.get<Array<string>>(this.GET_URL, {params: opts}).pipe(
tap(solutions => {
dog.solutions = solutions;
return dog
}),
catchError(//calls to an error handling method I made)
)
return dog
}
我希望它进入水龙头,改变解决方案,然后返回水龙头。然而,它似乎击中了下方的回报(那里只是为了有一个默认回报)。
有没有人有什么建议?
解决方案
tap
不允许您更改结果,您需要改为使用map
。更多关于tap
vs map
:RxJS 中的 tap 和 map 有什么区别?
另外,我不确定您是否要立即返回dog
,因为在执行调用并dog
修改参数之前会返回:
private GET_URL = '...';
getSolutions(dog: Dog): Dog {
let opts = new HttpParams();
//set params
// changed to return stream
return this.http.get<Array<string>>(this.GET_URL, {params: opts}).pipe(
map(solutions => { // <- change to map
dog.solutions = solutions;
return dog
}),
catchError(//calls to an error handling method I made)
)
// return dog // this would return before the URL was executed
}
推荐阅读
- c# - 来自列表 C# 的对象自毁
- c - LCM,然后以矩阵形式表示
- regex - Angular 9 - Validators.pattern('^[0-9][0-9][0-9]$') 与 012 等前导 0 数字不匹配
- postgresql - SpringBoot+Kotlin+Postgres 和 JSONB:“org.hibernate.MappingException:没有 JDBC 类型的方言映射”
- sqlite - ElectronNet with .net core 3.0 Sqlite 找不到表
- javascript - 在悬停链接上将 Div 水平移动到当前悬停的链接位置
- c# - 获取指向实体框架中相同外键引用的所有实体
- list - Scala迭代列表的两个连续元素
- r - USarrests data.frame in R - 哪个州(行)呈现最小和最大的犯罪率(列)
- maven - 我添加时 Jacoco 报告生成失败
确保插件配置的属性