因此,假设我们的 angular 应用程序中有以下结构
+-- src
| +-- app
| | +-- customer
| | | +-- customer.scss
| | | +-- customer.module.ts
| | +-- product
| | | +-- product.scss
| | | +-- product.module.ts
| +-- sass
| | +-- _common.scss
| | +-- app.scss
| | +-- project-level-styles.scss
Run Code Online (Sandbox Code Playgroud)
我们可以像这样设置我们的项目级 sass 文件:
@import 'common';
// project level classes
@import 'project-level-styles';
// module level classes
@import '../app/customer/customer.scss'
@import '../app/customer/product.scss'
Run Code Online (Sandbox Code Playgroud)
因此,在这些customer.scss和product.scss我将有在该模块内的许多组件中通用的类。
应该注意的是,当您创建一个不在组件级别的样式表并将其放在其他地方(例如模块或项目目录中)时,angular 处理这些样式的方式是不同的。
Angular 可以将组件样式与组件捆绑在一起,从而实现比常规样式表更加模块化的设计。您放入组件样式的选择器仅适用于该组件的模板。
所以请注意,任何与 componentsstyleUrls数组无关的样式表都可以应用于您站点中的任何元素(如果您不使用特殊性)。它不仅适用于该模块,所以这可能不是所有情况的解决方案,但这是我为我的模块所做的事情,理解这一点,我可以在该模块化样式表中编写特定于该模块的样式通过定位根该模块的元素...
组件 vs 全局
在我的应用程序中,我customerModule调用了一个根组件,customerComponent并且在该 html 中有一个根元素,它具有以下类:
customer-container
所以在我的内部,我customer.scss可以像这样预先设置我的所有样式:
.customer-container .info-heading {
font-size: 15px; color: #333;
}
.customer-container .section-divider {
margin-top: 1em; border-top: 1px solid #dfdfdf;
}
Run Code Online (Sandbox Code Playgroud)
所以我现在可以达到一定程度的特殊性,防止我的风格渗透到其他项目组件中。