属性是私有的,并且只能在Angular Library中的类错误内访问

时间:2019-01-23 15:30:04

标签: angular angular-cli aot angular-library

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

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

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

我了解这些错误,因此我将对其进行纠正,但我的问题是: 如果我尝试使用aot构建旧应用程序,那么我不会收到此错误。为什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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