2017-02-21 3 views
12

"?"私が使用したときに私のプロジェクトのように、角度2なぜ "?" 2番目のテンプレート結合の演算子

に結合テンプレートでオペレータ?。バインディングはうまくいきますが、削除するとビューには何も表示されません。

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

違いを教えてもらえますか、このように使用してもよいし、悪い場合もあります。

おかげ

答えて

13

角度がprojectが割り当てられた値を持って前にビューをレンダリングし、それは例外が発生します。 ?.projectは、データがかなりの時間がかかることがあり、サーバから例えば、フェッチ非同期であるとき、通常は起こりnullまたはundefined、あるとき評価を停止します。

変化の検出が変化を認識次回は、バインディングが再評価されるであろう。 projectに値がある場合、それはproject.categoryをバインドします。

14

?は、安全運航事業者です。変数がnullであるか、undefinedであるかをチェックして、テンプレートが何らかの虚偽のプロパティを選択しようとしないようにします。

さらに詳しい情報:https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths

+1

中小詳細...安全なナビゲーション演算子は、エルビス演算子と同じではありません。エルヴィスの演算子は安全なナビゲーション演算子(あなたが知っていることを知っている)と同じではない三項演算子を参照してください:) – Alex

+0

@ AJT_82ああ警告のためにありがとう!私はそれを取り除き、混乱を起こさないようにします。 – echonax

+0

ウィキペディアによるとElvis演算子のようです。 [Elvis演算子は第2オペランドが省略された三項演算子です](https://en.wikipedia.org/wiki/Elvis_operator)。それを元に戻す!それを「安全なナビゲーションオペレータ」と呼ぶことは決してありません。 –

関連する問題