Angular material 是否设置角度材质按钮的样式而不是“通过属性”?

Angular material 是否设置角度材质按钮的样式而不是“通过属性”?,angular-material,angular-material2,Angular Material,Angular Material2,我刚开始在工作中使用棱角材料。但我立刻击中了一些让我困惑的东西——希望我搞错了。 要设置按钮样式,您似乎必须添加属性,而不是类 <button mat-raised-button>Continue</button> 继续 有没有办法通过css类来实现这一点?如果没有,那么如果你建立了一个大型复杂的网站,使用了大量的mat-risted按钮,并且客户决定他们想要mat-stroked按钮,那么你必须更改每个按钮实例吗? 常规的css/HTML按钮在这里肯定有优势,因为您

我刚开始在工作中使用棱角材料。但我立刻击中了一些让我困惑的东西——希望我搞错了。 要设置按钮样式,您似乎必须添加属性,而不是类

<button mat-raised-button>Continue</button>
继续
有没有办法通过css类来实现这一点?如果没有,那么如果你建立了一个大型复杂的网站,使用了大量的mat-risted按钮,并且客户决定他们想要mat-stroked按钮,那么你必须更改每个按钮实例吗? 常规的css/HTML按钮在这里肯定有优势,因为您可以将一个css类应用于多个按钮实例,然后只需更改单个类定义即可在任何地方更改样式。
我遗漏了什么?或者说,在角材质中,样式真的与功能(反模式)啮合了吗?

从HTML的角度来看,
mat-risted button
可能看起来像一个没有值的元素属性,但作为角材质的一部分,它实际上是组件选择器的一部分-另一部分是元素名称
按钮。因此,组合
创建了一个角度材质按钮组件,它与普通按钮加CSS不同。这通常是相当明显的,因为大多数棱角材料组件没有HTML等价物,因此它们有自己的元素名称(例如
),但也有一些例外,例如

当您“使用”像MatButton这样的角度材质组件(以及指令)时,您不仅仅是在“设计”现有HTML组件(例如使用引导CSS)。您使用的组件具有许多功能,超出了仅使用CSS所能实现的功能,当然,您是在功能丰富的Angular平台上构建的

所以是的-如果需求发生变化,您必须将所有代码从
mat-risted button
重构为
mat-stroked button
。然而,现在大多数代码编辑器/IDE都使这成为一项相当简单的任务。此外,应用程序通常将公共应用程序模式“包装”到自己的组件中。因此,您可以在整个应用程序中使用一个包含MatButton的
my app button
组件,然后您只需更改单个定义(或应用程序可能使用的多种不同按钮模式)

如果您只对标准HTML5接口的材质设计样式感兴趣,那么可能存在其他仅CSS的解决方案,这可能是更合适的选择(取决于应用程序需求)