Как получить глобальный селектор внутри эмуляции эмулированного представления (CSS / Angular2)
У меня есть компонент Home с этим внутри:
<alert type="info">Hello from ng2-bootstrap</alert>
Внутри моего home.style.scss у меня есть это:
:host .alert {
background-color: green;
}
который должен изменить цвет фона на зеленый, но это не так.
Приведенный выше код CSS создаст этот стиль:
[_nghost-wjn-3] .alert[_ngcontent-wjn-3] {
background-color: green;
}
и окончательный HTML выглядит так:
<home _nghost-wjn-3="">
<div _ngcontent-wjn-3="" class="card-container">
<alert _ngcontent-wjn-3="" type="info" ng-reflect-type="info">
<div class="alert alert-info" role="alert" ng-reflect-initial-classes="alert" ng-reflect-ng-class="alert-info">
Hello from ng2-bootstrap Sat Sep 17 2016
</div>
</alert>
</div>
</home>
Я не знаю, в чем здесь проблема, но я думаю, что селектор неправильный. Я хотел бы, чтобы последний селектор был:
[_nghost-wjn-3] .alert
вместо:
[_nghost-wjn-3] .alert[_ngcontent-wjn-3]
Или, другими словами, почему нет атрибута _ngcontent-wjn-3 на <div class="alert">...</div>
?
Может быть, я все делаю неправильно. То, что я пытаюсь достичь, это настроить CSS отдельных компонентов начальной загрузки (<alert>
в приведенном выше коде), как это предусмотрено библиотекой ng2-bootrap ( https://github.com/valor-software/ng2-bootstrap) внутри моих пользовательских компонентов (<home>
в коде выше).
Я использую инкапсуляцию вида по умолчанию (эмулированную) в домашнем компоненте.
Как я могу сделать это, пожалуйста?
2 ответа
Я понял это сам. Вот что я искал:
:host /deep/ .alert {
background-color: green;
}
Приведенный выше код будет производить следующее:
[_nghost-wjn-3] .alert {
background-color: green;
}
Таким образом, я могу изменить стили по умолчанию для класса начальной загрузки (в данном случае.alert) внутри моего компонента <home>
,
Источник: https://angular.io/docs/ts/latest/guide/component-styles.html
Тебе нужно:
[_nghost-wjn-3] alert[_ngcontent-wjn-3]
Вместо:
[_nghost-wjn-3] .alert[_ngcontent-wjn-3]
Если вы идете и проверяете свою структуру, тег оповещения имеет ngcontent...
атрибут, а не его div ребенок с классом оповещения.