检索observable(打字稿/角度)时投影到子对象

时间:2017-08-16 03:49:16

标签: json angular typescript

我有一些示例json从API进入Angular服务,这是一组对象:

{
  "data": {
    "id": 1,
    "title": "one"
  },
  "stats" : {
    "voteCount": 8
  }
}

'data'部分是我想以反角形式提交回来的角度,所以我真的希望我的observable是一个只有id和title的对象集合:

export class SimpleIssue {
  id: number;
  title: string; 
}

在我的角度服务中,我得到的数据如下:

getItems(): Observable<SimpleIssue[]> {
    return this.http.get(this.apiUrl + 'simpleissues/')
        .map((response: Response) => <SimpleIssue[]> response.json())
        .do(thedata => console.log('all: ' + JSON.stringify(thedata)))
        .catch(this.handleError);
}

我想如果我将response.json()更改为可能有效的response.json()。数据,或者如果我在该行之后添加了另一个.map:

.map(blah =&gt; blah.data)

但没有运气。顺便说一句,如果我把它作为'任何'类型引入,我可以放{{myItem.data | json}}并且正好回到我所期望的,因为它正在处理每个集合对象。

我可以使用它,或者我是否缺少为每个视图发送不同视图模型等的基本概念?

由于

1 个答案:

答案 0 :(得分:0)

Haven未经测试,但这适用于您的情况:

getItems(): Observable<SimpleIssue[]> {
    return this.http.get(this.apiUrl + 'simpleissues/')
        .map((response: Response) => <any[]> response.json())
        .map((arr: any[]) => arr.map(i => i.data))
        .do(thedata => console.log('all: ' + JSON.stringify(thedata)))
        .catch(this.handleError);
}