Angular 6:Strange"属性xxx受到保护,只能在类及其子类中访问

时间:2018-05-21 18:29:18

标签: javascript angular typescript angular6

我有一个图书馆项目,我正在迁移到Angular 6和Angular CLI 6.

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

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

现在,当我尝试在Angular 6中构建它时,我得到的错误很多。无论我在哪里使用InputDirective,我都会遇到四个错误:

  • Property&#39; _id&#39;受到保护,只能在课程中访问&#39; NativeFormElementChild&#39;及其子类。
  • 财产&#39; _required&#39;受到保护,只能在课程中访问&#39; NativeFormElementChild&#39;及其子类。
  • Property&#39; _ariaDescribedBy&#39;受到保护,只能在课程中访问&#39; NativeFormElementChild&#39;及其子类。
  • Property&#39; _ariaRequired&#39;受到保护,只能在课程中访问&#39; NativeFormElementChild&#39;及其子类。

我没有尝试从NativeFormElementChild内部以外的任何地方访问这些属性。所以我不知道这些错误来自哪里。使用Angular 5,我不会遇到任何这些错误。

1 个答案:

答案 0 :(得分:0)

在组件html的内部,将*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>