显示数据时未定义

时间:2020-08-21 06:05:50

标签: angular

当我想要显示结果数据时,我得到未定义

这仅在 progress 数组中发生。

其余数据没有这种问题。

为什么会这样,我该如何解决?

console.log(this.splineChart)

[{…}]
  0:
   data: Array(1)
     0: Array(2)
       0: undefined
       1: undefined

ts:

  user: User[];
  splineChart = [];

  load() {
    this.route.params
      .pipe(
        switchMap(
          (params: Params) => {
            if (params['id']) {
              return this._peopleService.getPeopleById(params['id'])
            }
            return of(null)
          }
        )
      )
      .subscribe(
        (user: User[]) => {
          this.splineChart = [{
            data: user.map(function (item) {
              return [item.progress.tasks, item.progress.week]; 
          })}]
        },
        error => {
          console.log(error)
        }
      )
  }

我的json文件::

{
    "users": [
        {
            "id": 1,
            "fname": "Tommie",
            "lname": "Shurtleff",
            "photo": "tommie",
            "money": "667.16",
            "progress": [
                {
                    "id": 1,
                    "week": 1,
                    "tasks": 29
                },
                ...
            ]
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

Progress是一个数组,您将其视为对象。 item.progress.tasks不适用于数组。

您必须遍历item.progress才能获得期望的结果。

在下面替换您的订购部分。

this.splineChart = [{
   data: user.map(function(item) {
     return item.progress.map(progress => [progress.tasks, progress.week]);
   })
}];

请参见下面的示例。

const user = [{
  "id": 1,
  "fname": "Tommie",
  "lname": "Shurtleff",
  "photo": "tommie",
  "money": "667.16",
  "progress": [{
      "id": 1,
      "week": 1,
      "tasks": 29
    },
    {
      "id": 1,
      "week": 2,
      "tasks": 30
    },
  ]
}];

let splineChart;
this.splineChart = [{
  data: user.map(function(item) {
    return item.progress.map(progress => [progress.tasks, progress.week]);
  })
}];

console.log(this.splineChart)

答案 1 :(得分:-1)

尝试激活路线,例如:

React.memo

然后

Parent

}

希望,它将为您提供帮助。