在角度2应用

时间:2017-01-31 17:40:39

标签: angular binding interpolation

只是想知道问号在角度2应用程序的下一个表达式中意味着什么。



<h1>
 Time Remaining: {{ currentExercise.duration? - exerciseRunningDuration }}
</h1>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

这显然是拼写错误/打印错误。如果您在(.)标记之后没有?,那么Angular模板编译器会将其视为三元运算符

答案 1 :(得分:1)

补充@silentsod评论,因为文档网址已更改。

这是safe navigation operator (?.)

的拼写错误

<h1>
 Time Remaining: {{ currentExercise?.duration - exerciseRunningDuration }}
</h1>

答案 2 :(得分:1)

正如先前的答案所说,这是一个拼写错误,正如Harshl所说,如果(。)之后? mark,Angular将其视为三元运算符。但如果声明如下:

<h1>
 Time Remaining: {{ currentExercise?.duration - exerciseRunningDuration }}
</h1>enter code here

问号充当安全导航操作员。 &#34;它提供了一种防止属性路径中的空值和未定义值的方法。当表达式达到第一个空值时,表达式将失效。 显示为空白,但应用会保持滚动无错误&#34;。 (Angular Documentation

此外,如果代码如下:

<h1>
Time Remaining: {{ currentExercise.duration - exerciseRunningDuration }}
</h1>enter code here

如果&#39;持续时间&#39; “当前运动”的属性&#39;为null,Angular将抛出一个空引用错误,整个视图将消失。这就是为什么使用安全导航操作符非常重要。

答案 3 :(得分:0)

<h1>
 Time Remaining: {{ currentExercise?.duration - exerciseRunningDuration }}
</h1>

?使属性可选。如果父作用域属性:currentExercise 不存在,它将抛出一个 NON_ASSIGNABLE_MODEL_EXPRESSION 异常。您可以使用 =?或 =?attr 以将该属性标记为可选。