如何在管道过程中转换可观察结果

时间:2018-09-29 12:11:38

标签: angular typescript rxjs angular-observable

由于没有API响应适合所需数据接口的大小,因此我们需要转换HttpResponse以使其与我们的类型定义方法相匹配

得到一个错误,指出“ Tag []”类型上不存在“结果”

 Interface Tag{
     title:string;
    }

searchTag(term:string):Observable<Tag[]>{
  const url = 'api/tags'    
  return this.http.get<Tag[]>(url).pipe(map(tags=>tags.Result)) <<-error here 
}

请注意,由于GET'api / tags'响应如下所示,我正在将Observable响应映射到Result对象中,这就是为什么我应该将管道中的上面的标签映射到 Result

 {
    "Operation": "GET/allTags",
    "Count": 2,
    "Result": [{"title": "tsadg"}]
}

1 个答案:

答案 0 :(得分:0)

正如@jonrsharpe所建议的那样,您告诉TS,HTTP客户端实例将以Tag形状返回响应,其中Result在此处未定义!尽管您必须重塑http响应提示类型以使其像

<{Result:Tag[]}>

现在TS不会反对访问结果,因为它是形状的一部分