如何有条件地添加一个元素属性,例如checked复选框的?
checked
NgAttr我认为以前的Angular版本具有并且NgChecked似乎都提供了我所追求的功能。但是,这些属性在Angular 2中似乎不存在,我看不到提供此功能的其他方法。
NgAttr
NgChecked
null 删除它:
null
[attr.checked]="value ? '' : null"
要么
[attr.checked]="value ? 'checked' : null"
暗示:
当您在其中添加此绑定的HTML元素不具有该绑定中使用的名称的属性(checked在这种情况下),并且也没有将Angular组件或指令应用于具有的同一元素时@Input()checked;,则[xxx]="..."无法使用。
@Input()checked;
[xxx]="..."
替代方案是[style.xxx]="...",[attr.xxx]="...",[class.xxx]="..."这取决于你试图完成什么。
[style.xxx]="..."
[attr.xxx]="..."
[class.xxx]="..."
因为<input>仅具有checked属性,但没有checked属性[attr.checked]="..."是此特定情况的正确方法。
<input>
[attr.checked]="..."
常见的陷阱还在于,对于[attr.xxx]="..."绑定,值(...)始终是字符串化的。仅属性和@Input()s可以接收其他值类型,例如布尔值,数字,对象,…
...
@Input()
__元素的 大多数 属性和属性都是连接的,并且具有相同的名称。
当绑定到属性时,该属性还仅从该属性接收字符串化的值。 当绑定到该属性时,该属性将接收与其绑定的值(布尔值,数字,对象等),而该属性又是字符串化的值。
此后Angular进行了更改,知道了这些特殊情况并进行了处理,<label[for]="即使没有这样的属性,您也可以绑定到(与相同colspan)
<label[for]="
colspan