Angular 2+ / Typescript无法读取未定义的属性

时间:2019-05-16 09:30:29

标签: angular typescript

我正在使用Angular 7,并且正在从服务获取此数据:

{name: "peter", datetime: 1557996975991}

然后我有这种获取数据的方法:

myMethod() {

    this.myService.getdata().subscribe((res) => {

      console.log(res); // returns: {name: "peter", datetime: 1557996975991}

      console.log(res[0].datatime); // Gives Error: Cannot read property 'datetime' of undefined 

    }); 

}

当我尝试获取数据时间值时,我得到:

给出错误:无法读取未定义的属性“ datetime”

我该如何解决?

5 个答案:

答案 0 :(得分:5)

res变量是对象而不是数组。

您需要更改为console.log(res.datatime);

更改为

myMethod() {

    this.myService.getdata().subscribe((res: any) => {

      console.log(res); // returns: {name: "peter", datetime: 1557996975991}

      console.log(res.datatime);

    }); 

}

答案 1 :(得分:1)

您从对象那里获得价值

console.log(res.datetime)

答案 2 :(得分:0)

您正在混淆对象和数组。

当您执行console.log(res[0].datatime)时,您可以在{name: "peter", datetime: 1557996975991}清楚地看到它是一个对象时,将响应理解为一个数组。

正如Hein指出的那样,您应该使用datatime来访问console.log(res.datatime)属性

答案 3 :(得分:0)

console.log(res.datetime);-注意e中的datetime

答案 4 :(得分:0)

是的,就像@FailedUnitTest所说的那样,最好的方法是声明一个接口,这样您就可以访问此值。始终避免使用“ any”,因为当代码变得越来越困难时,您可能会遇到一些麻烦。