【发布时间】: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