Mat*_*ins 3 html javascript conditional-statements typescript angular
*ngIf当我有一个可能未定义的对象或所需对象之外的对象时,我总是在角度指令中使用这种行为显示
<div *ngIf="object?.foo">
...
</div>
Run Code Online (Sandbox Code Playgroud)
我知道这有效,但不知道为什么...
但是,当我尝试在我的TypeScript文件中的 if 上使用它时,如以下 angularTS1005, TS1109在我尝试使用此行为的每一行上,向我抛出两个不同的错误,相互交替。
if(object?.foo){} // error TS1109
if(object?.foo){} // error TS1005
if(object?.foo){} // error TS1109
if(object?.foo){} // error TS1005
Run Code Online (Sandbox Code Playgroud)
我在这个项目中使用 Angular 7.3.9
它在您的模板中工作的原因是因为 angular 会将其计算为以下表达式:
<div *ngIf="object && object.foo">
Run Code Online (Sandbox Code Playgroud)
如果对象为空,这将防止在对象上调用属性的错误。
文档链接:https : //angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths
它在组件的打字稿部分不起作用,因为打字稿不支持它。
?打字稿中for 变量的唯一用途是指定方法的参数是可选的:
function myFunc(mandatoryParam: any, optionalParam?: any) {
...
}
myFunc('hello'); // Will work
myFunc('hello', 'world'); // Will work too
Run Code Online (Sandbox Code Playgroud)
正如对此答案的评论中所述,TypeScript 将在 3.7 版本中添加对 angular 模板语法的支持:https : //www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#可选链
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |