0

我正在尝试在可重用库中转换 Angular 6 应用程序;这是我所做的:

  • 创建了一个新的 Angular 工作区
  • 在该工作区中创建了一个新的 Angular 库项目
  • 从库中的旧应用程序复制工件并调整导入语句

当我尝试使用“ng build --project=..”编译项目时,我收到很多这样的错误:“属性 X 是私有的,只能在类 Y 中访问”

我理解错误,我会更正它们,但我的问题是:如果我尝试使用 aot 构建旧应用程序,我不会收到此错误..为什么?

谢谢!

4

2 回答 2

2

在 AOT 编译中,Angular 静态分析你的代码。使用错误的访问修饰符是让 AOT 编译失败的标准,而在没有 AOT 的构建中编译成功。

之所以这样,是因为在“及时”模式下(通常是您的 ng 启动),没有使用 Typescript - 正在生成 ES5 代码,因此没有“私有”字段这样的概念,我们没有办法强制执行。

从模板访问的东西必须是公共的,因为它们是在类实例之外访问的。

于 2019-01-23T15:35:51.310 回答
0

private属性正在使用特定版本的 Typescript。在创建新的 Angular 工作区时,安装了一个新的 typescript 版本。

于 2019-01-23T15:35:33.947 回答