2017-05-26 64 views
1

我正在看教程,并在angularjs中学习Elvis。然后,我创建一个对象:现在angularjs elvis不是必需的吗?

cabecaDeGelo{ 
    name: 'jailson', 
    lastname: 'mendes', 
    address: { 
     street: null, 
     lol: 'lol' 
    } 
} 

并试图

名称:{{ cabecaDeGelo.name}} - >工作正常

街道:{{ cabecaDeGelo.address.street }} - >工作正常 WHAT ???

{{ cabecaDeGelo.address.street }}生成错误'原因不存在!它是NULL!教程显示控制台错误。我在想这是一个版本问题?现在我不需要ELVIS了?

like:{{ cabecaDeGelo.address?.street }}? 我很困惑。

我的配置是@angular/cli: 1.0.4/node: 6.10.3

+0

您是否声明了'cabecaDeGelo = {}'为空白对象?请添加完整的组件代码..我猜测,因为最初由'{}'自第一级'cabecaDeGelo.address'定义的对象值不会失败,而第二级将失败'cabecaDeGelo.address.street',其中地址未定义.. –

回答

0

显示一个空值或未定义的值是没有问题(和从未,既不在JavaScript中,也没有在一个角表达式)。

什么是问题并导致异常是显示null或未定义的引用的属性。

例如:

const foo = { 
    bar: null 
} 

显示foo.bar如果不是一个问题。如果要显示例如foo.bar.baz,则会出现问题,因为您无法访问空(或未定义)引用(foo.bar)的属性(baz)。这就是需要无效导航运算符的地方:

{{ foo.bar?.baz }}: OK 
{{ foo.bar.baz }}: exception 
+0

'{{foo.bar}}':只显示对象为null '{{foo.bar?.baz}}':确定 '{{foo.bar.baz}}':异常。 应该是'{{foo?.bar}}'不显示任何东西,我不明白为什么返回空而不是错误... thx – LuanDR