只是想知道问号在角度2应用程序的下一个表达式中意味着什么。
<h1>
Time Remaining: {{ currentExercise.duration? - exerciseRunningDuration }}
</h1>
&#13;
答案 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 以将该属性标记为可选。