首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法绑定到“disabled”,因为它不是“li”的已知属性

无法绑定到“disabled”,因为它不是“li”的已知属性
EN

Stack Overflow用户
提问于 2016-12-20 19:19:59
回答 2查看 67K关注 0票数 40

我向li元素添加了[disabled]属性。但是我得到了这个错误:

不能绑定到'disabled‘,因为它不是’li‘的已知属性。

这是我的代码部分:

<li [disabled]="pager.currentPage > 1">
</li>

有谁可以帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-20 19:24:00

<li>元素没有disabled属性。

您希望应用于<li的组件或指令实际上并未应用,或者可能应该设置disabled属性而不是属性

<li [attr.disabled]="pager.currentPage > 1 ? true : null">

null将在条件为false的情况下删除该属性。布尔型false将导致

<li disabled="false">

这可能不是你想要的。使用null,您可以获得

<li>
票数 80
EN

Stack Overflow用户

发布于 2016-12-20 19:35:27

加上枪手的答案。disabled属性仅对具有可以禁用的操作的html标记有意义。

禁用的元素

如果元素属于以下类别之一,则认为该元素实际上处于禁用状态:

禁用的输入按钮元素作为disabled

  • select元素的

  • 输入元素,这些元素是具有禁用的disabled

  • optgroup元素的attribute

  • option元素,这些disabled

  • fieldset元素是具有禁用的

的disabled

  • fieldset元素

https://www.w3.org/TR/html5/disabled-elements.html

因此,禁用一个li是没有意义的,因为它一开始就没有任何动作。

另一种理解方式是 disabled 属性实际上是一个@Input属性,它是由与表单相关的指令定义的,比如FormControl或FormControlName和...,所以如果你不使用这些指令,你就不能有禁用的属性。

例如,一个输入可以有disabled属性,因为它可以有NgModel,但安莉或div不能有disabled属性,因为它永远不能有NgModel!

因此,为了让残障人士正常工作,angular会检查两件事:

1- disabled是由Angular2定义的指令还是由您定义的指令?(否)。

2-在标记的同一级别上使用的另一个指令定义的@是否被禁用(如NgModel、FormControl和..)?(是的,但您没有使用它们,因为li不能有FormControl!)。

这样Angular2就会抛出一个错误。

当你做attr.disabled时,这不再是一个@Input,它只是一个普通的html属性,就像所有其他的普通属性一样。

因此,如果您只需要将禁用的属性作为普通的html属性来使用它来做一些css工作,那么您应该使用attr.disabled.。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41241135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档