2017-02-21 4 views
12

Ich möchte nur über die Verwendung der "?" Operator in Vorlage Bindung in Winkel 2.Warum verwenden wir "?" Operator in Vorlage Bindung in Winkel 2

Wie in meinem Projekt, wenn ich benutze?. Die Bindung funktioniert gut, aber wenn sie entfernt wird, zeigt sie nichts in der Ansicht.

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

Können Sie mir bitte den Unterschied sagen, es ist eine gute Praxis, so oder so zu verwenden.

Dank

Antwort

13

Wenn Angular die Ansicht rendert vor project einen Wert zugewiesen bekam, ist es eine Ausnahme verursacht. ?. stoppt die Auswertung, wenn projectnull oder undefined ist, was normalerweise passiert, wenn Daten asynchron abgerufen werden, zum Beispiel vom Server, was einige Zeit dauern kann.

Wenn die Änderungserkennung das nächste Mal eine Änderung erkennt, werden die Bindungen erneut ausgewertet. Wenn project dann einen Wert hat, wird project.category gebunden.

14

? ist die sichere Navigation Betreiber. Es prüft, ob die Variable null oder undefined ist, so dass unsere Vorlage nicht versucht, eine Eigenschaft von etwas Falsy auszuwählen.

Weitere Informationen: https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths

+1

Kleines Detail ... Der sichere Navigationsoperator ist nicht derselbe wie der elvis-Operator. Elvis-Operator bezieht sich auf den ternären Operator, der nicht derselbe ist wie ein sicherer Navigationsoperator (was ich weiß, dass Sie wissen) :) – Alex

+0

@ AJT_82 ah danke für die Warnung! Ich werde es entfernen, um keine Verwirrung zu verursachen. – echonax

+0

Scheint, als wäre es ein Elvis-Operator nach Wikipedia. [Elvis-Operator ist der ternäre Operator, dessen zweiter Operand weggelassen wurde] (https://en.wikipedia.org/wiki/Elvis_operator). Fügen Sie es zurück! Ich werde nie daran denken, es "sicherer Navigationsoperator" zu nennen. –