formControl.value?.length 有什么作用?

Cur*_*tis 0 angular

我明白这不是最好的帖子。但是我在材质多选自定义触发器示例中看到了这行代码。

*ngIf="toppings.value?.length > 1" https://stackblitz.com/angular/omvmgjjbnnq?file=app%2Fselect-custom-trigger-example.html

我不明白什么是“?” 在这里做,我什至很难用谷歌搜索它可能是什么(谷歌不喜欢问号)。这是否允许您value安全地调用属性而无需检查是否value已定义或为空?

Rea*_*lar 5

*ngIf="浇头.值?.长度 > 1"

我会解释每个部分

*ngIf

是一个条件指令,如果表达式的计算结果为false则删除 DOM 元素。

浇头

是组件的公共属性。

。价值

toppings变量的子属性。

.value?.length

?运营商告诉角度如果value停止计算表达式toppings.value未定义。这可以防止您获得length不是undefined错误的属性。

浇头.价值?.长度> 1

告诉*ngIf保持DOM元素时toppings.value没有未定义toppings.value.length大于1

安全导航运营商

这就是所谓的?标记。

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

这也是一个非常糟糕的名字,以及为什么你找不到任何谷歌搜索结果。

  • 这是其中之一......我希望我在 6 个月前就知道这一点,哈哈。本来可以节省这么多`*ngIf="toppings && toppings.value && toppings.value.length"` 类型条件。谢谢 (2认同)