【发布时间】: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