Property is private and only accessible within class error in Angular Library

帅比萌擦擦* 提交于 2019-12-25 00:25:48

问题


I am trying to convert an Angular 6 application in a reusable library; here is what I did:

  • created a new Angular workspace
  • created a new Angular library project inside that workspace
  • copied the artifacts from the old application inside the library and adjusted the import statements

When I try to compile the project with "ng build --project=.." I get a lot of these errors: "Property X is private and only accessible within class Y"

I understand the errors and I will correct them but my question is: If I try to build the old application with aot I don't get this error..why?

Thank you!


回答1:


In the AOT compile, Angular statically analyzes your code. Using wrong access modifiers is a criteria that lets the AOT compile fail, while the compile succeeds in a build without AOT.

This is the way it is because in the "just in time" mode (which usually is your ng start), Typescript is not being used - ES5 code is being generated, so there's no such concept as a "private" field, and we have no way of enforcing this.

Things that are accessed from a template must be public, since they're being accessed outside of the class instance.




回答2:


The private property is working with specific versions of Typescript. When creating your new Angular workspace, a new typescript version was installed.



来源:https://stackoverflow.com/questions/54330599/property-is-private-and-only-accessible-within-class-error-in-angular-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!