2017-05-26 59 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