angular - 有条件地触发 mergeMap,如果为 false 则抛出错误
问题描述
this.activatedRoute.queryParamMap
.pipe(
map(params => {
return params.get('ID'))
}),
mergeMap(val => {
if(val)
return this.GetData(val)
.pipe(
map((res:any)=>{
return JSON.parse(res.data);
})
);
else
throwError(new Error('ID is missing'));
}),
).subscribe(x => {
console.log(x)
},
err => console.log(err)
);
我想要做的是获取 ID 查询字符串,如果它存在则触发获取请求,否则抛出错误。我可以在 subscribe() 中执行此操作,但是这样做我将不得不嵌套它(在订阅中订阅)。但是,当我尝试抛出错误时,我收到此错误:TypeError:“您在预期流的位置提供了'未定义'。您可以提供 Observable、Promise、Array 或 Iterable。”
解决方案
推荐阅读
- r - 如何在 R 中导入和合并多个文件?
- c++ - CRTP:将类型从派生类传递到基类
- azure-resource-manager - 无法在 ARM 模板中集成 Windows 的自定义脚本扩展
- python - 在使用 pandas to_csv 时添加文本限定
- wordpress - Wordpress:Osetin Meal Planer,在自定义帖子类型 URL 结构中添加 %author%?
- oracle - oracle 作业的状态为 DONE (ERROR),但作业从未完成
- visual-studio-code - 如何在 Windows 中调试 WSL 远程扩展问题并为项目做贡献?
- swift - 在 Swift 正则表达式中使用 Unicode
- php - WP Ajax 表单未通过 $_GET
- php - 在ajax中删除cookie