如何将嵌套数组放入 rowData

How to get a nested array into rowData

我是 Angular 和 JS 的新手,所以请多多包涵。我有一个 Angular 5 服务,它获取 JSON 结构如下:

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

然后 JSON 作为对象存储在我的网格中的一个变量中-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);

并且只是将 objects[] 分配给 rowData 但似乎没有任何效果。问题似乎出在我的表达上;

this.vehicles.result.objects;

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

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

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

问题出在您的 vehicles 对象上,最初在呈现组件时未定义它。添加 ? 来解决这个问题。

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

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

相关的文档