2016-10-04 6 views
0

私はこれを持っている: 属性ディレクティブは、ホストコンポーネントのプロパティにバインドすることはできません

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

私-CMPは @Input() disabledを持っており、 inputは別の指令のようなものです:なぜそれは disabledであることを不平を言っている

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

私のcmpの入力として宣言されていない?

基本的には、ホスト要素にいくつかのバインディングを適用するディレクティブが必要です。

Hereはplunkr

答えて

0

あなたの問題は、あなたのディレクティブは、唯一のコンポーネントの一つのタイプのために働いていることであり、それは、ディレクティブを使用する方法はありませんです。

inputディレクティブをdivに追加すると、disabledは既知のネイティブプロパティではないため、動作しません。あなたのコンポーネントにも同じことが起こります。コンポーネントの前にディレクティブがロードされているからだと思います。 @Directive@Componentする必要があり、あなたはまた、MyComponentにタイプミスをしたとtemplate属性を持っている必要があります。

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

N.B

これを修正するには、適切にあなたのdisabled属性を使用する必要があります。あなただけのホストから角括弧を削除する必要が

0

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

Plunker

+0

それは右に適用されないのだろうか? – lqbweb

+0

アップ、申し訳ありません、セレクタの代わりにホストから角括弧を削除する必要があります、私は私の答えを変更しました。これで属性として= "true"が選択されました。それが幸せである –

+0

場合でも、それはまだバインドされていないと思う: https://plnkr.co/edit/8AbfBIlSGv3Bkz9bIg0w?p=preview それは未定義、印刷します。 – lqbweb

関連する問題