这个解决方案很好,但它更适用于任何常见样式,这些样式应该适用于所有组件。例如,CSS网格的样式。 为了使它更angularish你可以应用组件组封装为你无:
`@Component({
selector: 'my-app',
template: ` `,
styleUrls: ["shared.style.css"],
encapsulation: ViewEncapsulation.None
}) export class App {}`
Demo could be found here (plunker)
注:样式,通过这个方式(只是添加样式标签,或与非封装)包括将影响您网页上的所有元素。有时它是我们真正想要的(同意为洞项目使用任何css框架)。但是,如果只想在少数组件之间共享样式 - 那可能不是最好的方式。
Summary:
(+) easy to use
(-) no encapsulation
2.我喜欢这个解决方案,因为它是非常可以理解的,具有可预测的行为。 但它有一个问题:
它会在您每次使用共享样式时添加样式标签。 这可能是一个问题,如果你有很大的风格文件,或许多使用它的元素。

@Component({
selector: 'first',
template: `<h2> <ng-content> </ng-content> </h2>`,
styleUrls: ["shared.style.css"]
})
export class FirstComponent {}
Demo could be found here (plunker)
Summary:
(+) easy to use
(+) encapsulation
(-) duplicates styles for every usage
有可以使用多一个选择。 只需创建一个组件,它将为其子组件提供共享样式。
` <styles-container>
<first> first comp </first>
</styles-container>
<styles-container>
<second> second comp </second>
</styles-container>`
在这种情况下,你将不得不使用/深/在你的风格,使可用的样式子组件:
:host /deep/ h2 {
color: red;
}
我还值得一提的是不要忘记使用:让主人款式可用只有为子元素。如果你忽略它,你将会获得更多的全球风格。
Demo could be found here (plunker)
Summary:
(-) you have to create container and it in templates
(+) encapsulation
(+) no duplicated styles
注:风格封装是很酷的功能。但你也应该记住,没有办法限制你的深度风格。所以如果你使用了深色的款式,那么它对所有的孩子都是绝对可用的,所以你也要小心使用它。