【问题标题】:Angular AOT build failing because of Private member由于 Private 成员,Angular AOT 构建失败
【发布时间】:2020-12-02 02:38:34
【问题描述】:

我正在从事一个迁移项目,其中我拥有基于 Angular 8 开发的现有 UI 应用程序代码库。

当我进行正常构建时(即 ng 构建)我能够成功构建,但部署的工件大小更大。

例如: main.js (4.5 mb) 大小。

如果我将上述工件部署到我的生产中,我的页面将花费更多时间在浏览器中呈现。

因此,对于生产构建,我尝试在 AOT 模式下构建我的 Angular 应用程序,但构建失败。

以下是从几乎每个模板获取的日志。

src/app/components/header/header.component.html(52,19): Property 'competenciesService' is private and only accessible within class 'HeaderComponent'

我从日志中了解到,我不能在 AOT 模式下在 .html 模板中使用私有成员。

但由于我的应用程序是由其他团队构建的,我不能去更改每个模板中的属性实际上是不可能的。

请向我建议他们解决此问题的任何方法,以便我的生产构建工件的大小将减小,从而提高应用程序性能。

Angualr CLI 全球版本:8.3.15

Angular CLI 本地版本:8.3.0

如果需要更多信息,请告诉我。

谢谢,

【问题讨论】:

  • 访问私有成员是一个错误,因此您应该修复它。解决方案:将属性公开。我能想象到的所有其他解决方案都比这个简单的搜索和替换任务要多得多。
  • @ChristophLütjen 正如建议所尝试的那样,但它抛出了其他错误,例如预期的 0 个参数,但得到了 1。,类型“{}”上不存在属性“customerMatchStatus”。,属性“事件”不存在存在于“FinanceHeaderInformationComponent”类型上。还有更多
  • Afaik 角度改进了错误检查,新版本比旧版本检测到更多错误。但是……有错误,您需要修复它们。

标签: angular angular8 angular2-aot


【解决方案1】:

由于您正在迁移代码,因此您的首要任务应该是尽可能地兼容您的框架,即使这需要大量工作,因为应用程序在未来将变得越来越难以维护。模板应该只访问公共变量。您可以在组件 ts 文件中添加 getter。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2018-06-07
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多