Attribute指令无法绑定到主机组件属性

时间:2016-10-04 14:24:29

标签: angular angular-directive

我有这个:

<my-cmp input>
  hello
</my-cmp>

my-cmp有@Input() disabledinput是另一个指令,如:

@Directive({
  selector: '[input]',
  host:{
    '[disabled]': 'true'
  }
})

为什么抱怨disabled未在my-cmp中声明为输入?

基本上,我想要一个在主机元素上应用一些绑定的指令。

Here是plunkr

2 个答案:

答案 0 :(得分:0)

您的问题是您的指令仅适用于一种类型的组件,而不是指令的使用方式。

如果将input指令添加到div,它将无效,因为disabled不是已知的本机属性。您的组件也是如此。我想这是因为指令是在组件之前加载的。

要解决此问题,您应该正确使用已禁用的属性:

<my-cmp [disabled]="true">
  hello
</my-cmp>

NB :您还在MyComponent上输了一个拼写错误,@Directive应该是@Component,并且应该有一个template属性。

答案 1 :(得分:0)

您只需要从主机中删除方括号:

@Directive({
    selector: '[input]',
    host:{
       'disabled': 'true'
    }
})

Plunker