是否可以在没有值的情况下向Angular host元素添加属性
我正在尝试对输入元素的readonly属性进行主机绑定,以便只将其添加到主机元素中,而不为其分配任何值。它们应该被使用的方式。我知道HTML规范特别指出,只要属性存在,给它赋值就不会有任何区别 但仍然如此。是否可以以某种方式添加没有值的属性 我试过的 由于属性在应用是否可以在没有值的情况下向Angular host元素添加属性,angular,typescript,Angular,Typescript,我正在尝试对输入元素的readonly属性进行主机绑定,以便只将其添加到主机元素中,而不为其分配任何值。它们应该被使用的方式。我知道HTML规范特别指出,只要属性存在,给它赋值就不会有任何区别 但仍然如此。是否可以以某种方式添加没有值的属性 我试过的 由于属性在应用null值时被删除,所以我使用了以下技巧: @HostBinding('attr.readonly') private _readonly: '' | null = null; public get readonly() { re
null
值时被删除,所以我使用了以下技巧:
@HostBinding('attr.readonly')
private _readonly: '' | null = null;
public get readonly() {
return this._readonly !== null;
}
public set readonly(value: boolean) {
this._readonly = value ? '' : null;
}
这将部分起作用,因为当值为null
时,它将从宿主元素中删除readonly
属性,但当值为空字符串时,这仍然会导致readonly=“
,这不是我试图做的。我想要的输出将是只读
,没有任何值应用于它
我也试着用renderer.setAttribute
做同样的事情,但效果是一样的
那么有可能吗?
这里有一个解决方案。您可以使用
@HostBinding('attr.readonly')readonly=''代码>
说明:
- 将
''
赋值给属性只会添加没有值的属性
- 分配
null
以删除属性
- 设置非空值,例如:
true
或yes
,并在
属性
将null绑定到属性将删除它。请查收@不,是的,我知道。。。那句话我说得有点笨拙。我对它进行了一些编辑,以澄清null
的工作原理与预期一致,但空字符串仍然为属性分配了一个值,这不是我想要的。因此,如果是空字符串,您也需要删除该属性?否。如果是空字符串,我希望结果是readonly
而不是readonly=“”
readonly
和readonly=”“
完全相同()