我有一个带accordion的Angular 2组件,我使用ng-bootstrap添加了它。一切在功能上都运行得很好,但是我尝试使用已编译的accordion元素所具有的.card, .card-header, .card-block类加载的样式,这些样式根本不会应用于元素。
这些类是在将accordion转换为div时由ng-bootstrap直接设置的。
我通过一个链接到组件TypeScript文件的styles.scss文件应用我自己的css。渲染完所有内容后,我的样式会出现在html输出标头的<style></style>标记中。它看起来像这样。
<style>
[_nghost-xfh-23] .card[_ngcontent-xfh-23] {
border: none; }
[_nghost-xfh-23] .card-header[_ngcontent-xfh-23] {
margin-top: 0.75em !important;
border: 1px solid rgba(0, 0, 0, 0.125); }
[_nghost-xfh-23] .card-block[_ngcontent-xfh-23] {
text-align: left; }
</style>styles.scss如下所示:
:host .card {
border: none;
}
:host .card-header {
margin-top: 0.75em !important;
border: 1px solid rgba(0, 0, 0, 0.125);
}
:host .card-block {
text-align: left;
}我的猜测是Angular 2试图应用样式(在编译过程中),但后来使用上述类创建了div,使得无法将样式应用于元素。
我受到限制,不能直接编辑bootstrap.css或创建其他全局css文件。我希望有一种方法可以在组件加载后重新应用css样式,或者其他一些方法来设置ng-bootstrap accordions的样式。
希望我的问题有意义,关于Sy
发布于 2017-01-17 02:21:33
正如@ChristopherMoore在他的评论中所说,这是由于Shadow DOM造成的问题。添加/deep/修复了这个问题。下面是更新后的函数代码。
/deep/ .card {
border: none;
}
/deep/ .card-header {
margin-top: 0.75em !important;
border: 1px solid rgba(0, 0, 0, 0.125);
}
/deep/ .card-block {
text-align: lefthttps://stackoverflow.com/questions/41680623
复制相似问题