【问题标题】:Targeting an Array Within an Object - Observables in Angular 2以对象内的数组为目标 - Angular 2 中的 Observables
【发布时间】:2017-04-11 04:30:17
【问题描述】:

有一次,我使用 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 需要的才能进行迭代。

【问题讨论】:

  • 试试让records.data的记录?或初始化记录: this.records = resRecordsData.data ?
  • 好主意。让我试试看。
  • 让我知道它是否有效
  • @floor,这行得通。非常感谢!

标签: javascript arrays angular typescript


【解决方案1】:

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

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

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

this.records = resRecordsData.data

【讨论】:

    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 2017-10-25
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多