我在Angular 2中有一个名为my-comp的组件:
<my-comp></my-comp>
在Angular 2中如何为这个组件的宿主元素设置样式?
在Polymer中,您将使用“:host”选择器。我在Angular 2中尝试过。但这并不奏效。
:host {
display: block;
width: 100%;
height: 100%;
}
我还尝试使用组件作为选择器:
my-comp {
display: block;
width: 100%;
height: 100%;
}
这两种方法似乎都不管用。
谢谢。
有个漏洞,但同时已经修复了。:host{}现在工作正常。
支持的还有
:host(selector) { ... } for selector to match attributes, classes, ... on the host element
:host-context(selector) { ... } for selector to match elements, classes, ...on parent components
selector /deep/ selector (alias selector >>> selector doesn't work with SASS) for styles to match across element boundaries
UPDATE: SASS is deprecating /deep/.
Angular (TS and Dart) added ::ng-deep as a replacement that's also compatible with SASS.
UPDATE2: ::slotted
::slotted is now supported by all new browsers and can be used with `ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
参见将外部css样式加载到Angular 2组件中
/deep/和>>>不受Chrome中已弃用的相同选择器组合符的影响。
Angular模拟(重写)了它们,因此不依赖于浏览器对它们的支持。
这也是为什么/deep/和>>>不能使用ViewEncapsulation的原因。本机,启用本机阴影DOM,并依赖于浏览器的支持。