2016-12-07 3 views
0

У меня есть простой компонент, используя шаблон, как это:Применить компонент к шаблону в Angular2

<span style="display:inline-block;" #control>Content here</span> 

Затем в месте вызова я возиться с моделированием:

<my-comp style="width:300px;"></my-comp> 

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

<my-comp style="width:300px;" class="ng-untouched ng-pristine ng-valid"> 
    <span style="display:inline-block;" #control>Content here</span> 
</my-comp> 

Fabulous. В поле <my-comp> ширина игнорируется, а на <span>, где я хочу, она не применяется.

Я знаю, что могу сделать ширину свойством моего компонента, а затем применить его в шаблоне, но мой вопрос шире: Что делать, если я не хочу быть директивным в отношении применяемого стиля? Есть ли способ, чтобы атрибуты с сайта вызова автоматически применялись к внешнему элементу шаблона?

+0

Не могли бы вы объяснить простыми словами, что именно вы хотите? – micronyks

+0

Можете ли вы попробовать ''. Если он не работает, пожалуйста, укажите Plunker. Я не думаю, что это связано с Angular2, но с простой проблемой CSS. –

+0

@micronyks Это были мои простые слова :) Что вы нашли неясным? –

ответ

2

пользовательский компонент визуализируется как inline в браузере, который означает, что вы не можете добавить ширину к нему, если не изменить позиционирование (absolute/fixed) или изменить отображение (block/inline-block/flex/inline-flex).

Так что либо изменить встроенный стиль (одобряется), или добавить правило CSS для компонента:

@Component({ 
    selector : 'my-comp', 
    template : `...`, 
    styles : [`:host{display: inline-block}`] 
}) 
export class MyCompComponent {} 
Смежные вопросы