首页 > 解决方案 > 如何点击 TypeScript/Angular 中的 observable 返回?

问题描述

我正在尝试在服务中创建一种方法。该方法应:

但是,我不希望它作为可观察对象返回,因为我正在更改它在组件中返回的对象。

现在我的方法如下所示:

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
}

我希望它进入水龙头,改变解决方案,然后返回水龙头。然而,它似乎击中了下方的回报(那里只是为了有一个默认回报)。

有没有人有什么建议?

标签: angulartypescriptrestobservablehttprequest

解决方案


tap不允许您更改结果,您需要改为使用map。更多关于tapvs mapRxJS 中的 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
}

推荐阅读