角获取数组TypeError:无法读取未定义的属性“ 1”

时间:2019-08-23 13:04:24

标签: angular

我有以下JSON结构:

{
  "daypart": [
    {
      "temperature": [
        45,
        27,
        47
      ]
    }
  ]
}

我正在尝试从JSON API显示上面的数组。我只想显示此数组中的第一个元素,但是出现以下错误

Error: Uncaught (in promise): TypeError: Cannot read property '1' of undefined

代码:

 this.http.get("xxxxxxxx")
      .subscribe(data => {

        let f = data["daypart"][0]

        this.duhok = f

        console.log("duhok" +  this.duhok["temperature"][1])

      })

HTML:

    {{duhok.temperature[1]}}°

3 个答案:

答案 0 :(得分:5)

在这里,我会做出一个疯狂的猜测,并说在请求被解决之前就渲染了html。 尝试将插值包装在ngIf块

<div *ngIf="duhok">
 {{duhok.temperature[1]}}°
</div>

答案 1 :(得分:2)

如果只想显示整个JSON结构中的第一个温度,则可以使用以下代码。使用异步管道的优点是您不必手动订阅/取消订阅可观察对象。

TS:

public getData(): Observable {
  return this.http.get("xxxxxxxx");
}

HTML:

{{(getData() | async)?.daypart[0].temperature[1]}}

答案 2 :(得分:0)

可能是因为到达该组件时无法解析数据。您可以在该路径上向该组件添加解析器,以确保到达该位置时数据已解析。检查一下: https://angular.io/api/router/Resolve