如何将接口模式强制转换为Observable {}

时间:2018-10-17 21:20:47

标签: angular

API HTTP GET请求从服务器返回以下响应

namespace

在我的服务文件中,如果我对{ "results": [ { "id": "206152672", "title": "Test", "restrictions": {}, "_expandable": { "container": "", "metadata": "", "extensions": "", "operations": "", "children": "", "history": "/rest/api/content/206152672/history", "ancestors": "", "body": "", "version": "", "descendants": "", "space": "/rest/api/space/Test" }, "_links": { "webui": "/display/test", "tinyui": "/x/4KNJD" } }, ... ... }] } 函数执行了Observable<any>,我可以看到正在显示的数据。

getNotes

如果我尝试将响应强制转换为我的模态,则不会显示数据。当我订阅组件时,它返回 getNotes(): Observable<any> { return this.http.get<any>(this.url); }

undefined

请帮助我了解如何使用返回的observable强制转换模态。

注意:-响应位于对象中,而不是数组中。

1 个答案:

答案 0 :(得分:1)

服务器中对象的结构与您期望的(接口数组)不匹配。您得到的是对象{"results": ReleaseModal[]}而不是数组。

因此您可以将getNotes方法的签名更改为

getNotes(): Observable<{"results": ReleaseModal[]}>

或映射get的结果:

return this.http.get<any>(this.url).map(data => data.results);

当然还有rxjs map方法。

我认为应该没有问题,您的接口ReleaseModal不包含响应数组中的所有属性,唯一的问题是响应不包含数组直接。