无法读取未定义角度4的属性“名称”

时间:2017-05-21 10:55:26

标签: angular typescript

我正在尝试在组件模板中打印一个值。

但是我收到了上述错误 transform: translate3d()

我已从此问题的代码中删除了额外的内容。我想访问详细信息的第一行。

组件文件

Cannot read property 'name' of undefined

4 个答案:

答案 0 :(得分:21)

我认为您应首先检查在浏览器中打印数据时是否定义了数据。

{{data[0]?.name}}

由于您的数据最初未定义,因此无法访问其名称属性。

Documentation

  

Angular安全导航操作员(?。)流畅方便   防止属性路径中的null和未定义值的方法。这里   它是,如果currentHero是保护视图渲染失败   空。

您还可以使用&&条件

检查变量是否为空

{{data[0] && data[0].name}}

答案 1 :(得分:0)

从您的错误消息中,似乎data未定义(或为空) - 并且错误发生在显示

的行上
{{data[0].name}}

可能在此之前加入console.log(data)以验证发生了什么

答案 2 :(得分:0)

尝试将其放入构造函数而不是ngOnInit:

getPersonDetailsService.getData() ...

此外,如果“数据”没有长度>,您需要在模板内部进行一些检查。 0 {{data[0]?.name}}

答案 3 :(得分:0)

"数据的价值"从getData()服务解决响应后,会更新。我假设您正在点击服务并获取数据。然而,一旦服务返回响应,承诺将得到解决。 View同时尝试渲染模板,并且当它评估表达式data [0]时,它不会在0处找到任何元素,因为数据尚未从服务到达。因此,您得到错误,因为第0个索引处的元素未定义。

你应该在这里使用一个可观察的。