2016-10-04 84 views
0

我有這樣的:屬性指令不能綁定到主機組件屬性

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

我-CMP有@Input() disabledinput另有一個指令,如:

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

爲什麼抱怨disabled是沒有在my-cmp中聲明爲輸入?

基本上,我想要一個指令,在主機元素上應用一些綁定。

Here是plunkr

回答

0

你的問題是,你的指令只工作了一個類型的組件,它不是指令應該如何使用。

如果您將input指令添加到div,它將不起作用,因爲disabled不是已知的本地屬性。您的組件也一樣。我想這是因爲指令在組件之前加載。

爲了解決這個問題,你應該正確使用你的disabled屬性:

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

N.B:您還MyComponent做了一個錯字,@Directive@Component,應該有一個template屬性。

0

你只需要從主機中移除方括號:

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

Plunker

+0

那麼它將不適吧? – lqbweb

+0

向上,對不起,您需要從主機而不是選擇器中刪除方括號,我修改了我的答案。現在您已選擇=「true」作爲屬性。 –

+0

即使是幸福的,現在還沒有約束,我認爲: https://plnkr.co/edit/8AbfBIlSGv3Bkz9bIg0w?p=preview 它打印,不確定的。 – lqbweb