我将[disabled]
属性添加到li
元素。但是我得到了这个错误:
无法绑定到'已禁用',因为它不是'li'的已知属性。
这是我的代码部分:
<li [disabled]="pager.currentPage > 1">
</li>
任何人都可以帮助我吗?
答案 0 :(得分:43)
<li>
元素没有disabled
属性
您希望应用于<li
的组件或指令实际上未应用,或者可能应设置disabled
属性而不是属性
<li [attr.disabled]="pager.currentPage > 1 ? true : null">
null
是在条件为false的情况下删除属性。布尔值false
将导致
<li disabled="false">
这可能不是你想要的。使用null
即可获得
<li>
答案 1 :(得分:12)
添加Gunter的答案。 禁用属性仅对具有可以禁用的操作的html标记有意义。
禁用元素
如果一个元素属于以下类别之一,则该元素实际上被禁用:
https://www.w3.org/TR/html5/disabled-elements.html
因为没有任何行动可以开始使用,所以没有意义。
另一种理解这一点的方法是禁用属性实际上是一个@Input属性,它由表单相关的指令定义,比如FormControl或FormControlName和......,所以如果你不使用那些指令,你不能禁用属性。
例如,输入可以具有禁用属性,因为它可以具有NgModel,但 li 或 div 不能具有禁用属性,因为它永远不会有NgModel !
因此,对于[禁用]工作,angular会检查两件事:
1- 禁用由Angular2定义或由您定义的指令? (不)。
2- 禁用 @input 是由另一个在标记中同一级别使用的指令定义的(如NgModel,FormControl和..) ? (是的,它是定义的,但是你没有使用它们,因为li不能有FormControl!)。
然后Angular2会抛出错误。
当您执行 [attr.disabled] 时,这不再是 @Input ,它只是一个普通的html属性,就像所有的其他正常属性。
因此,如果你只需要禁用属性作为普通的html属性来做一些css的东西,你应该使用 [attr.disabled] 。