angular - Angular 提前编译问题
问题描述
我正在尝试将我的应用程序设置为 AOT 编译以准备发布。当然,代码在 JIT 中编译得很好。
在 AOT 中,我收到很多如下所示的错误:
错误:无法绑定到“lead”,因为它不是“app-output-edit”的已知属性。1. 如果 'app-output-edit' 是一个 Angular 组件并且它有 'lead' 输入,那么验证它是这个模块的一部分。2. 如果“app-output-edit”是一个 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“@NgModule.schemas”以禁止显示此消息。3. 允许任何属性将“NO_ERRORS_SCHEMA”添加到该组件的“@NgModule.schemas”。
在我的例子中,Lead 是我的 OutputEditComponent 的公共 @Input() 属性。
我在网上找到的关于这个主题的大多数帖子都在谈论确保组件在您的组件或功能模块中声明。我没有使用功能模块。我有一个根模块(app.module.ts)和一个路由模块(app-routing.module.ts)。另外,我有一个模拟模块。我所有的组件都是根模块中的声明。
我也用其他绑定得到它。就像不能绑定到“formGroup”,因为它不是“div”的已知属性
而且我收到诸如“没有 ControlContainer 的提供者”和“没有 NgControl 的提供者”之类的错误。
最后,我遇到了第 3 方组件的错误,例如 ng-bootstrap:“无法绑定到 'items',因为它不是 ng-select 的已知属性”。哦,但它是...
更新 - 我能够解决除顶部 1 之外的所有错误:无法绑定到“X”,因为它不是“Y”的已知属性。大多数情况下,我们只是在 html 标记中遇到了错误:引用组件的私有属性、调用没有所有参数的方法等。仍在处理它。
谢谢。
解决方案
因此,就我而言,事实证明我的模拟模块正在干扰一切。我们为自动化测试设置了一个模拟模块,可能是错误的,它只是坐在那里,因为我们实际上还没有进行集成测试。
当心模拟模块!它在嘲笑你的 AOT!
和平和良好的编码。
亚伦
推荐阅读
- sql - SQL如何选择至少包含某个条件并且多次出现的ID?
- solr - 我在 SOLR 7.5 中收到错误“rod() 不支持基于点的字段”。如何解决?
- flutter - 嵌套滚动正文中的正文显示在 headerSliverBuilder 后面
- jmeter - 将 .har 文件转换为 .jmx JMeter 后,请求正文被删除
- spring - 在 Spring 应用程序中测试 GCP 发布者重试设置
- c# - 如何将图像名称保存在mysql数据库中,然后用C#将图像上传到wamp服务器
- php - $_SESSION 摧毁德国元音变音
- python - 如何检测和删除那些复杂的表情符号?
- java - 如何在 Java 中打印不带分号的 Hello World?
- c++ - 调整轮廓大小/纠正不完整的轮廓 OpenCV