Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在没有值的情况下向Angular host元素添加属性_Angular_Typescript - Fatal编程技术网

是否可以在没有值的情况下向Angular host元素添加属性

是否可以在没有值的情况下向Angular host元素添加属性,angular,typescript,Angular,Typescript,我正在尝试对输入元素的readonly属性进行主机绑定,以便只将其添加到主机元素中,而不为其分配任何值。它们应该被使用的方式。我知道HTML规范特别指出,只要属性存在,给它赋值就不会有任何区别 但仍然如此。是否可以以某种方式添加没有值的属性 我试过的 由于属性在应用null值时被删除,所以我使用了以下技巧: @HostBinding('attr.readonly') private _readonly: '' | null = null; public get readonly() { re

我正在尝试对输入元素的readonly属性进行主机绑定,以便只将其添加到主机元素中,而不为其分配任何值。它们应该被使用的方式。我知道HTML规范特别指出,只要属性存在,给它赋值就不会有任何区别

但仍然如此。是否可以以某种方式添加没有值的属性

我试过的 由于属性在应用
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=”“
完全相同()