首页 > 解决方案 > 有条件地触发 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。”

标签: angularrxjs

解决方案


推荐阅读