2017-02-21 3 views
12

içinde şablon bağlama operatörü Sadece "?" kullanarak bilmek istiyorum ı kullandığınızda projemde olduğu gibiNeden "?" Kullanıyoruz açısal 2

açısal 2'de bağlayıcı şablonda santral?. Bağlama iyi çalışır, ancak çıkarırsa görünümde hiçbir şey göstermez.

<span class="subhead">{{project?.category}}</span> 

Lütfen bana farkı söyler misiniz, bu şekilde veya kötü şekilde kullanmak iyi bir uygulamadır.

Teşekkür

cevap

13

Eğik project atanmış bir değere gelmeden önce görünüm oluşturur, istisna neden olur. project veri alınamadı zaman uyumsuz olduğunda genellikle oldukça uzun bir zaman alabilir sunucudan örneğin olur ki, null veya undefined olduğunda değerlendiren ?. durur.

bir sonraki değişimi saptama

bir değişikliği fark bağlama yeniden değerlendirilecektir. project daha sonra bir değere sahip olduğunda project.category bağlanır.

14

? güvenli navigasyon operatörüdür. Bizim şablon falsy şeyin mülkü seçmek çalışmayın böylece değişken null veya undefined olup olmadığını kontrol eder.

diğer bilgiler: https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths

+1

Küçük detay ... güvenli navigasyon operatörü elvis operatörü olarak aynı değildir. Elvis operatörü, güvenli navigasyon operatörü ile aynı olmayan üçlü operatörü ifade eder (bildiğinizi biliyorum) :) – Alex

+0

@ AJT_82 ah uyarı için teşekkürler! Herhangi bir karışıklığa neden olmamak için onu kaldıracağım. – echonax

+0

Vikipedi'ye göre bir Elvis operatörü gibi görünüyor. [Elvis operatörü, ikinci işleneni olan üçlü operatördür] (https://en.wikipedia.org/wiki/Elvis_operator). Geri ekle! "Güvenli navigasyon operatörü" demeyi asla unutmayacağım. –