Angular 2. 属性是私有的,只能在类内访问

Posted

技术标签:

【中文标题】Angular 2. 属性是私有的,只能在类内访问【英文标题】:Angular 2. Property is private and only accessible within class 【发布时间】:2017-08-27 05:09:55 【问题描述】:

我正在尝试使用 AOT 编译一个 Angular 2 应用程序。在我的项目中,我使用的是 angular-2-json-schema-form,它会导致如下错误:

属性是私有的,只能在类中访问

在编译我的应用程序时。

我认为问题出在 TypeScript 中。有人帮我解决这个问题。

【问题讨论】:

如果您需要帮助,请发布您的代码 您正在访问模板中的 private 字段。不要那样做。 我没有访问模板中的私有字段。我只是在使用这个包npmjs.com/package/angular2-json-schema-form 以及其中的所有问题 @drewmoore,是否有一些 tsconfig 属性可以禁用这种打字稿行为? @Noob 不 - 不是 tsc 抛出,而是 ngc,这是设计使然。如果错误来自该库,则应将其作为错误提交给他们的 repo。 【参考方案1】:

根据GitHub Issue,这是因为 prod 构建默认使用 Ahead of Time 编译。您可以通过关闭 AOT 或使用公共属性来解决此问题。

【讨论】:

【参考方案2】:

最可能的问题是您在 component.html 中有一些类似 myService.value 的内容,或者您​​有一个枚举并在您的 component.html 中直接使用(例如 .

如果您使用 myService.value,请使用 getter

get value()
   return myService.value;

//in your .html
value

如果您的问题是因为您使用的是枚举,请声明一个变量

IEnum=Enum

//in your .html
<div *ngIf="value==IEnum.Case1">

【讨论】:

以上是关于Angular 2. 属性是私有的,只能在类内访问的主要内容,如果未能解决你的问题,请参考以下文章

属性“x”是私有的,只能在类“y”中访问

面向对象

Angular 7:基于产品构建:属性“服务”是私有的,只能在“组件”类中访问

类成员

类和对象的方法与属性---懒加载与私有事件---单例与私有化构造函数

7 类-友元函数