【问题标题】:Identifier refers to a private member of the component标识符是指组件的私有成员
【发布时间】:2018-01-13 05:18:02
【问题描述】:

.html

  <offline-picks *ngFor="let pick of pickData" [data]="pick"></offline-picks>

.ts

export class OfflineArticlesPage {
  private pickData: picksModel[] = [];
  constructor(private localCacheService: LocalCacheServiceProvider) {
  }
}

当我使用如上所示的private member 时,它显示以下错误。我在VS code 编辑器上使用Angular Language Service 扩展。

[Angular] 标识符“pickData”指的是 组件

希望在组件内部使用private members 是一种好的编程习惯,不是吗?但作为上述问题的解决方案,below comment on the extension's repo.

语言服务将发出这些错误,因为它们将 AOT 期间的错误。最终,您需要解决这些问题。

我们计划支持访问私有成员和受保护成员 AOT,但至少要到 6.0(明年春天)才能落地。

那么你能告诉我在组件上声明成员的最佳方式是什么?

更新:

我将ionic cordova run android --prod --device CLI 命令与最新的Ionic "ionic-angular": "3.5.3", 一起使用。但它在我的Android 设备上运行良好。这意味着它与AOT 一起运行也很好,不是吗?那么为什么会出现这个错误(实际上是警告)?

【问题讨论】:

  • 警告是因为private 属性仅在它们定义的组件中使用。如果您想在视图中使用属性(因此,在该组件之外),您需要将其声明为公共的。所以在视图中使用private 属性根本不是一个好习惯。
  • 实际上,这是AoT 的一个问题。您可以在下面的答案链接中看到关于此的精彩讨论。这是一个巨大的讨论,也很棒@sebaferreras

标签: angular typescript ionic2 ionic3


【解决方案1】:

他们必须是 public 才能使 AoT 工作。

更多详情请参见此处: https://github.com/angular/angular/issues/11978

【讨论】:

  • 请查看我帖子中的Update:。您对此有何看法?
  • 我不知道 Ionic 在做什么(如果它在做 AoT 或 JiT,但如果它有效,则意味着它是 JiT,因为它不应该在 AoT 上工作)
  • 我通过上面的链接学到了很多关于这个问题的知识。非常感谢:)
  • 没问题:)
猜你喜欢
  • 1970-01-01
  • 2012-05-11
  • 2010-12-14
  • 2019-09-06
  • 2013-03-21
  • 2020-09-28
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
相关资源
最近更新 更多