javascript - Angular 6:奇怪的“属性 xxx 受到保护,只能在类及其子类中访问
问题描述
我有一个要迁移到 Angular 6 和 Angular CLI 6 的库项目。
有一个名为的抽象类NativeFormElementChild
具有一些私有属性:_id
、_required
、_ariaDescribedBy
和_ariaRequired
。
然后我有一个指令 ,它作为属性InputDirective
应用于 a (添加了一些额外的功能)。从 延伸。<input>
InputDirective
NativeFormElementChild
现在,当我尝试在 Angular 6 中构建它时,会出现大量错误。我在任何地方使用 my InputDirective
,都会出现四个错误:
- 属性“_id”受保护,只能在“NativeFormElementChild”类及其子类中访问。
- 属性“_required”受保护,只能在“NativeFormElementChild”类及其子类中访问。
- 属性“_ariaDescribedBy”受保护,只能在“NativeFormElementChild”类及其子类中访问。
- 属性“_ariaRequired”受保护,只能在“NativeFormElementChild”类及其子类中访问。
我不想从除了 inside 之外的任何地方访问这些属性NativeFormElementChild
。所以我不知道这些错误来自哪里。使用 Angular 5,我没有收到任何这些错误。
解决方案
在您的组件 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>
推荐阅读
- dart - 如何在 Flutter 中拆分列表
- laravel - 如何从数据库中调用所有数据变量数组?拉拉维尔
- python - Pandas - 组合具有相似值的行(名称拼写变化)
- woocommerce - Woocommerce - 订单跟踪链接
- html - 引导代码在 Fiddle 中有效,但在 localhost 中无效?
- php - PHP 使用 header('Content-Type: audio/mpeg') 时使用 file_put_contents 复制日志条目;
- typescript - 如何使此更新 API 更高效、更短且不重复
- java - Spring Webflux 返回 404 ( Not Foud )
- flutter - 如何让 Google reCaptcha 为 Flutter web 工作?
- django - APIClient vs RequestFactory(带有编码示例)