Angular 组件如何使用由用户定义的样式表?

Posted

技术标签:

【中文标题】Angular 组件如何使用由用户定义的样式表?【英文标题】:Angular components how to use stylesheet defined be the user? 【发布时间】:2020-05-13 23:40:07 【问题描述】:

假设我创建了一个名为 button 的 Angular 组件,并且我希望在他们的应用程序中实现它的用户设置按钮的颜色。除了使用 Input() 装饰器之外,还有其他方法吗?

【问题讨论】:

假设,例如,组件中按钮的颜色由一个变量保存,您可以使用@viewChild获取按钮组件的距离并使用this.button.color = yourColor;(甚至在一个方法)。我不明白为什么@Input 不行。您也可以使用 ng::deep,但它已被弃用。 【参考方案1】:

我唯一的替代方法是使用ng::deep。但请记住,这个功能很快就会变成deprecated!

以下示例说明如何使用它。

app.component.html:

<my-component>
   <another-component>
      <div class="buton"></div>
   </another-component>
</my-component>

my-component.component.scss:

.someclasse ::ng-deep 
     .button 
         background-color: white;
     

【讨论】:

【参考方案2】:

@Input 装饰器在这种情况下是最好的,例如。 :

button.component.html:

<button class="your-custom-buttom" [ngStyle]="backgroundColor: color">Button</button>

button.component.ts:

 @Input() color = 'red'

app.component.html:

<app-button color="green"></app-button>

另外,你可以添加一些特定的类到按钮组件,并告诉用户在styles.scss中改变它:

styles.scss:

.your-custom-buttom 
  background-color: red;

button.component.html:

<button class="your-custom-buttom">button</button>

https://stackblitz.com/edit/angular-dyrn4f?file=src%2Fapp%2Fbutton%2Fbutton%2Fbutton.component.html

【讨论】:

以上是关于Angular 组件如何使用由用户定义的样式表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 2 中将 SASS 用于组件样式?

Angular2 模块级样式表

如何使用 Webpack 和 Angular 将全局 css 样式与 in-js 组件样式一起使用?

如何将样式应用于 Angular 中的自定义组件内容?

如何让 Angular 组件动画跟随 CSS 类的变化,而不是静态样式?

如何使用 webpack、typescript、phaser 和 angular 配置全局 css 和 sass 样式表