Angular编译器未报告模板中缺少属性



如果在*ngIf指令中包装使用情况时,使用模板中使用非现有属性时,Angular AOT编译器不会失败。

例如。在此示例中,custom没有定义属性property

<div *ngIf="condition">
  {{ custom.property }}
</div>

为什么角编译器不会在此代码上失败?有没有办法来进行操作?

,仅出于澄清,该代码会如预期的那样失败:

<div>
  {{ custom.property }}
</div>

我目前正在考虑创建一个自定义的棉绒脚本,该脚本将从代码中删除所有*ngIf S并进行AOT构建以检查所有属性是否存在。这是一个有效的想法吗?如果是这样,为什么我必须首先这样做?

我正在使用Angular 5,但我认为它也不适用于较新的版本。

我发现Angular语言服务能够报告这些错误(在VS代码或Intellij Idea中)。因此,应该有可能。

Angular实际上提供了此功能,但默认情况下它不会出于任何原因而被打开。

将以下代码添加到tsconfig.json启用完整的模板类型检查:

"angularCompilerOptions": {
  "fullTemplateTypeCheck": true
}

但是要当心,这实际上并不是"完整"类型检查。它仍然跳过复杂的结构结构。但是在常春藤中,这显然将是编译器能够进行适当的"完整"模板类型检查的功能。

相关内容

最新更新