2016-10-04 9 views
0

У меня есть это:директива Атрибут не может связываться свойства компонента хоста

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

мой-ОГТ имеет @Input() disabled и input еще одна директива, как:

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

Почему жалуются, что disabled является не объявлен как вход в my-cmp?

В принципе, мне нужна директива, которая применяет некоторые привязки к элементу-хосту.

Here является plunkr

ответ

0

Ваша проблема заключается в том, что ваша директива работает только для одного типа компонента, и это не так, как следует использовать директивы.

Если вы добавите директиву input в div, это не сработает с 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

 Смежные вопросы

  • Нет связанных вопросов^_^