我刚刚开始在工作中使用Angular Material。但是我立刻发现了一些令我困惑的东西-希望我走错了方向。 要为按钮设置样式,您似乎必须添加一个属性,而不是一个类。
<button mat-raised-button>Continue</button>
是否可以通过CSS类来实现?如果不是这样,那么如果您使用大量垫子按钮来构建大型复杂站点,并且客户决定他们想要垫子按钮,则必须更改每个按钮实例吗? 常规的css / HTML按钮肯定在这里具有优势,因为您可以将一个css类应用于许多按钮实例,然后只需更改单个类定义即可在任何地方更改样式。 我缺少什么-还是样式真的与Angular Material中的功能(反图案)啮合?
答案 0 :(得分:1)
从HTML的角度来看,mat-raised-button
看起来像是没有值的元素属性,但作为Angular Material的一部分,它实际上是组件选择器的一部分-另一部分是元素名称{{1} }。因此,组合button
创建了一个Angular Material MatButton组件,该组件与普通按钮和CSS不同。这通常是很明显的,因为大多数Angular Material组件都没有等效的HTML,因此具有自己的元素名称(例如<button mat-raised-button>
),但是有一些例外,例如<mat-toolbar>
。 / p>
当您“使用” MatButton之类的Angular Material组件(以及指令)时,您不仅在“设计”现有HTML组件(例如,使用Bootstrap-CSS)。您正在使用的组件具有许多功能,这些功能仅是CSS不能完成的,当然,您是在功能丰富的Angular平台上构建的。
是的-如果该需求发生变化,您将必须将所有代码从<button>
重构为mat-raised-button
。但是,如今,大多数代码编辑器/ IDE都使这项工作变得相当简单。同样,应用程序通常将通用应用程序模式“包装”到其自己的组件中。因此,您可以在整个应用程序中使用一个mat-stroked-button
组件,其中包括一个MatButton,然后您只需要更改单个定义(或者您的应用程序可能使用许多不同的按钮模式)即可。
如果您仅对标准HTML5接口的材料设计样式感兴趣,则可能存在其他仅CSS的解决方案,这可能是一个更合适的选择(取决于应用程序要求)。