【问题标题】:How to check for incorrect property names at compile time in angular如何在编译时以角度检查不正确的属性名称
【发布时间】:2018-02-02 18:18:48
【问题描述】:

我开始使用 Angular 并构建一些练习应用程序。我的背景主要是 knockout.js,到目前为止,我非常喜欢我在 Angular 2/4 中看到的大部分内容。

但是,有一点让我觉得有些奇怪。在学习的过程中,我犯了几个拼写错误或属性错误(例如忘记在 ngFor 中使用循环变量),但是 VS 代码、CLI linter 和 angular 本身都没有抛出任何错误。例如,如果我在组件的 .ts 文件中有一个名为 myProperty 的属性,并且我不小心在我的 html 模板中输入了 {{myProporty}},我不会收到任何错误。只有一个空格,没有输出,留给我去尝试找出我做错了什么。在一个简单的模板中,这很容易,但至少有一次它让我坚持了很长时间,因为我试图弄清楚我错过了什么。

我注意到,如果模板在 @Component 装饰器标记中内联声明,则 linter 实际上确实 会引发错误。在这种情况下,运行 ng lint 会给我错误,The property "myProporty" that you're trying to access does not exist in the class declaration. 但是,如果我的模板在其自己的 html 文件中,则不会引发此类错误。

我不确定我是否遗漏了“严格”​​设置,或者这可能只是一个工具问题,但没有对这类事情进行任何形式的检查似乎很奇怪。 VS 代码似乎也没有任何类型的智能感知这些东西,虽然这可能是 VS 代码问题,我不知道。

只是想知道是否有人知道可以检查这些东西的插件,或者是否有我错过的 CLI 命令或其他东西。

【问题讨论】:

  • 你会做 lint 吗?
  • @Vega 是的,正如我所说,ng lint 不(显然)检查 html 文件。如果内联模板中有错误,则会引发错误,但如果它在单独的文件中,则什么也没有。即使应用程序运行也没有开发工具错误,这看起来很奇怪,因为 Angular 必须评估这些。
  • 尝试使用 --prod 选项构建它会给出所有错误ng build --prod
  • @Vega 尝试过,但不幸的是,与 ng lint 相同的问题。它会为内联模板抛出错误,但对于使用 templateUrl 包含的模板没有错误。

标签: html angular typescript visual-studio-code


【解决方案1】:

也许其他人知道更好的解决方案,但我搜索了一下,似乎这个 html 验证有点像 Angular 的一个持续开发领域。

与此同时,我确实找到了一个有用的 VS 代码扩展来解决我的智能感知问题:https://github.com/angular/vscode-ng-language-service

最新版本 (0.1.5) 似乎已损坏,但 0.1.4 为我的所有 html 模板提供了智能感知,我认为这将有很大帮助。

【讨论】:

  • 是的,绝对是一个持续存在的问题 w/ angular.... 我尝试过使用该插件,但它对我来说经常崩溃,以至于我最终放弃了它。我刚刚习惯了在我的模板中不检查错误:-(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2015-08-27
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多