的 是什么意思?角度语法中的意思是什么?

Chr*_*all 6 javascript typescript angular

我现在已经在一些地方看到了这种情况,但还没有找到任何答案。

我很好奇‘!’是什么?bang 在角度语法中起作用。

在此输入图像描述

Con*_*Fan 9

来自Angular 文档

非空断言运算符 (!)

从 Typescript 2.0 开始,您可以使用该 --strictNullChecks标志强制执行严格的空检查。然后,TypeScript 确保没有变量是无意的nullundefined

在此模式下,类型化变量默认不允许使用null和。undefined如果您未分配变量或尝试将null或分配给类型不允许undefined的变量, 类型检查器会抛出错误。nullundefined

如果类型检查器无法确定变量是否将在运行时存在,它也会引发null错误undefined。您可能知道这不会发生,但类型检查器不知道。您告诉类型检查器,通过应用后修复非空断言运算符 (!)不会发生这种情况。

Angular非空断言运算符 (!)在 Angular 模板中具有相同的用途。

例如,在使用*ngIf检查hero已定义后,您可以断言hero属性也已定义。

<!-- No hero, no text -->
<div *ngIf="hero">
  The hero's name is {{hero!.name}}
</div>
Run Code Online (Sandbox Code Playgroud)

当 Angular 编译器将模板转换为 TypeScript 代码时,它会阻止 TypeScript 报告hero.name可能为null或 的 内容undefined

与安全导航运算符不同,非空断言运算符不防范nullor undefined。相反,它告诉 TypeScript 类型检查器暂停对特定属性表达式的严格 null 检查。

当您打开严格的空检查时,您将需要此模板运算符。否则是可选的。