首页 文章

在对象内定位数组 - Angular 2中的Observable

提问于
浏览
2

有一次,我使用observables在我的Angular 2应用程序中成功迭代数组中的对象 . 在我的客户服务文件中我有这个:

getByCategory(category: string) {
    const q = encodeURIComponent(category);
    return this.http.get
    (`https://api.someurl.com/${this.ver}/clients/category/${q}?apikey=${this.key}`)
        .map((response: Response) => response.json())
        .catch(this.stageErrorsHandler);
}
    stageErrorsHandler(error: Response) {
    console.error(error);
    return Observable.throw(error.json().error || 'Server error');
}

然后我订阅了我的组件的ngOnInit生命周期钩子,如下所示:

ngOnInit() {
   this.clientService.getByCategory('consulting')
        .subscribe(resRecordsData => this.records = resRecordsData,
        responseRecordsError => this.errorMsg = responseRecordsError);
}

在组件中,我还发起了一个空数组的记录:

records = [];

然后在我看来,我正在迭代这样的记录数组:

<tr *ngFor="let record of records">

现在api / server上的数据配置已经改变 . 我以前在哪里定位数组,看起来像这样:

[
  {
    "id": "someid",
  }
]

...我需要将其更改为现在定位一个名为“data”的数组,该数组位于一个对象内 . 它看起来像这样:

{
  "count": 1000,
  "data": [
      {
         "id": "someid",
      }
   ]
}

简单的问题,我很难过:如何在这样的对象中定位数组?我需要在对象中定位数组,因为这是* ngFor需要的,以便能够迭代 .

1 回答

  • 2

    您可以尝试通过以下方式在记录中定位数组:

    <tr *ngFor="let record of records.data">
    

    要么

    您可以在数据检索中为数据设置记录:

    this.records = resRecordsData.data
    

相关问题