angular – 组件中的重复“id”属性

前端之家收集整理的这篇文章主要介绍了angular – 组件中的重复“id”属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上下文

我正在为复选框编写自定义Angular组件.该组件呈现复选框标记以及标签标记.复选框的“id”属性标签的“for”属性都设置为组件的id属性(组件的@Input),以确保单击标签将切换复选框.该模板的简化版本如下所示:

<div class="checkBox">
    <input type="checkBox" [id]="id" />
    <label [for]="id"><ng-content></ng-content></label>
</div>

问题

当我在我的组件上设置“id”道具(例如< my-checkBox id =“hello”> Check me< / my-checkBox>)时,会在组件包装器标签自动设置“id”属性. DOM.这导致DOM中出现重复的ID,因为我已经在组件内的复选框上设置了“id”属性.这是无效的,并且会破坏浏览器的默认切换点击标签行为. DOM输出是:

<my-checkBox id=“my-checkBox” ng-reflect-id=“my-checkBox” ng-reflect-checked="true">
    <div ng-reflect-ng-class="[object Object]" class="checkBox">
        <input class="checkBox__element" type="checkBox" name="fire_missiles" ng-reflect-id=“my-checkBox” id=“my-checkBox” value=“fire_missiles” ng-reflect-checked="true">
        <label class="checkBox__label" ng-reflect-html-for=“my-checkBox” for=“my-checkBox”>
            Fire missiles?
        </label>
    </div>
</my-checkBox>

有没有办法要么a)摆脱垃圾容器标签或b)停止自动反映“id”道具作为属性

注意:使用应用于div之类的属性选择器没有帮助,它只是从< my-checkBox />移动额外的“id”.到了div.

谢谢!

我只是简单地重命名复选框的id(以及属性标签),以便它不会与组件的id冲突,如下所示:
<input id="{{ id }}-checkBox" …>
<label for="{{ id }}-checkBox">…</label>

猜你在找的Angularjs相关文章