首页 > 解决方案 > Angular 6:奇怪的“属性 xxx 受到保护,只能在类及其子类中访问

问题描述

我有一个要迁移到 Angular 6 和 Angular CLI 6 的库项目。

有一个名为的抽象类NativeFormElementChild具有一些私有属性:_id_required_ariaDescribedBy_ariaRequired

然后我有一个指令 ,它作为属性InputDirective应用于 a (添加了一些额外的功能)。从 延伸。<input>InputDirectiveNativeFormElementChild

现在,当我尝试在 Angular 6 中构建它时,会出现大量错误。我在任何地方使用 my InputDirective,都会出现四个错误:

我不想从除了 inside 之外的任何地方访问这些属性NativeFormElementChild。所以我不知道这些错误来自哪里。使用 Angular 5,我没有收到任何这些错误。

标签: javascriptangulartypescriptangular6

解决方案


在您的组件 html 中,将 a*ngIf="true"放在最外面的 html 标记中。这似乎激活了 Angular 6 对受保护属性的理解。任何*ng标签(模板绑定)都可以使用。每个组件 html 都需要一个。

<div *ngIf="true">
...Everything in here will now properly have access to protected properties
</div>

或者,如果您没有外部元素,则可以使用ng-container...

<ng-container *ngIf="true">
...
</ng-container>

推荐阅读