【问题标题】:Angular 2 CLI - AoT Compilation - Unable to use HTML5 form validatorsAngular 2 CLI - AoT 编译 - 无法使用 HTML5 表单验证器
【发布时间】:2017-08-20 18:49:05
【问题描述】:

我正在尝试构建一个 Angular 2 项目,使用带有 --prod 和 --aot 参数的 angular-cli。构建失败并出现以下错误: Property 'required' does not exist on type '{ [key: string]: any; }'. 在我的 HTML 中,我在一些输入(必需,模式)上使用了 HTML5 验证器。 使用 JiT 编译,这些工作按预期工作。只有在 AoT 编译期间才会出现错误。 有没有人见过这个?我希望不必求助于使用 ReactiveForms 方法和使用 Angular Validators 来定义我的所有表单,除非没有办法。

【问题讨论】:

    标签: angular command-line-interface angular2-aot html5-validation


    【解决方案1】:

    以下是一些会导致 AoT 编译失败的事情。

    • 不要对模板或样式使用 require 语句,使用 styleUrls 和 templateUrls,angular2-template-loader 插件会在构建时将其更改为 require。
    • 不要使用默认导出。
    • 不要使用form.controls.controlName,使用form.get(‘controlName’)
    • 不要使用control.errors?.someError,使用control.hasError(‘someError’)
    • 不要在提供程序、路由或声明中使用函数,导出函数然后引用该函数名称
    • @Inputs、@Outputs、View 或 Content Child(ren)、Hostbindings 以及您在模板中使用或为 Angular 注释的任何字段都应该是公开的

    【讨论】:

    • 就是这样!我在 AoT 编译器标记的每个位置都使用了 control.errors?.error。通过将它们更改为 control.hasError('error'),编译器错误被删除。谢谢!作为旁注,编译陷阱列表非常有帮助,我认为任何执行 AoT 编译的人都会从这些信息中受益匪浅。这个列表在某处可用吗?
    • 我根据自己的研究创建了这个列表,因为我在编译中遇到问题很快就会从不同的地方获得积分我将在此创建一个博客
    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2017-01-10
    • 2018-02-08
    • 2020-01-10
    • 2017-01-23
    • 2017-01-13
    • 2017-01-10
    相关资源
    最近更新 更多