Angular 2 return 从服务过滤数据

Angular 2 return filtered data from services

我是 angular js 的新手,我想 return 从服务到组件的过滤数据。

这是我的 json 喜欢的样子

{
"emails": [
    {
        "list": [
        {
            "id": 1,
            "subject": "Test Subject 1"
        }, 
        {
            "id": 2,
            "subject": "Test Subject 2"   
        }]
    }, 
    {
        "list": [
        {
            "id": 3,
            "subject": "Test Subject 3"
        }, 
        {
            "id": 4,
            "subject": "Test Subject 4"
        }]
    }
]

}

这是我的服务

export class EmailService {

emails: any

constructor(private http: Http) {}


getEmailItem(id: number | string) {
    return this.http
    .get('../../../assets/js/data/email-list.json')
    .map(data => {data.json(); return data.json();});
}

}

我想return数据如下,怎么办?

{
    "id": 1,
    "subject": "Test Subject 1"
},

任何指南将不胜感激,谢谢

您可以展开 json 然后应用过滤器,

getEmailItem(id: number | string) {
    let flatData = [];
    return this.http
    .get('../../../assets/js/data/email-list.json')
    .map(data => {data.json(); return data.json();})
    .map(this.flatEmailList)
    .filter(email => email.id == id);
}

flatEmailList(data){
  let flatData = [];
  data.emails.map(emails => flatData = flatData.concat(emails.list));
  return  flatData;
}