如何将嵌套数组放入rowData

时间:2018-04-09 01:40:38

标签: javascript angular typescript ag-grid

我是Angular和JS的新手,所以请保持温柔。我有一个Angular 5服务,它提取JSON结构如下:

result: {
 objects: [
 {object1},
 {object2}.....

然后将JSON存储在grid-component.ts中的变量中作为对象:

getVehicles() {
this._vehicleService.getVehicles().subscribe(
  data => { this.vehicles = data },
  err => console.error(err),
  () => console.log('done loading vehicles')
);

我正在尝试将结果的数组部分 objects [] 放入rowData而没有任何运气。我尝试了几种方法;迭代对象并推送到rowData。

for (let vehicle of this.vehicles.result.objects) {
   this.gridOptions.rowData.push(vehicle);

只需将 对象[] 分配给rowData,但似乎没有任何效果。问题似乎与我的表达有关;

this.vehicles.result.objects;

过去的车辆Angular所说的一切都未定义。奇怪的是,如果我在模板中使用字符串插值,我可以使用* ngFor创建一个列表,如果vehicleIds使用相同的表达式,虽然控制台仍然抱怨未定义的属性;

<ul>
<li *ngFor="let vehicle of vehicles.result.objects">
  {{ vehicle.vehicleId }}
</li>

显然,我在这里缺少一些基本的东西。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题在于您的vehicles对象,最初在组件呈现时未定义。添加?以克服此问题。

<ul>
<li *ngFor="let vehicle of vehicles?.result.objects">
  {{ vehicle.vehicleId }}
</li>

使用async管道解决此问题的其他可能方法。您可以找到与async pipe here

相关的文档