Angular - 自动将指令添加到具有给定类的所有元素

Posted

技术标签:

【中文标题】Angular - 自动将指令添加到具有给定类的所有元素【英文标题】:Angular - automatically add directive to all elements with a given class 【发布时间】:2019-08-06 17:34:25 【问题描述】:

是否可以以编程方式向具有给定类名的组件中的所有元素添加指令,可能使用

document.getElementsByClassName("btn")

我想将matRipple 指令添加到所有使用btn 类的元素,而不需要我们的团队手动将指令添加到每个元素。

或者我是否缺少另一种方法来将 Angular Material 指令应用于给定类或标签名称的元素(例如 button

请注意,这适用于我们不希望将它们全部切换到 mat-buttons 的旧版应用程序。该指令运行良好,但我正在寻找一种方法让我们的开发人员更轻松。

【问题讨论】:

为什么不只搜索和替换一次? 我正在寻找一个可以添加的 JS,这样我的开发人员就不需要这样做了。只是好奇,因为这是显而易见的解决方案,但需要他们做点什么。 【参考方案1】:

或者我是否缺少另一种方法来将 Angular Material 指令应用于给定类或标签名称的元素(例如按钮)

是的,你可以声明一个基于标签、属性、类等的选择器。对于一个类,您可以将其定义为:'.class'

您可以在docs 上找到所有选项

【讨论】:

这很高兴知道,但需要我对指令本身进行代码更改。虽然我可以为自己的指令执行此操作,但我不想编辑 Angular Material 的源代码。除非我误会了…… 你是对的@Steve。错过了您正在使用第三方指令。我试图创建一个自定义指令来包装 matRipple 指令并以编程方式插入它,但到目前为止似乎不可能。 This answer 指向一个 github 请求并提供了一个替代方案(不确定这是否适合这个用例)。另外,我应该删除这个答案吗? 不,您的回答可能对其他人有所帮助。感谢您的链接!

以上是关于Angular - 自动将指令添加到具有给定类的所有元素的主要内容,如果未能解决你的问题,请参考以下文章

从指令 Angular 加载 Mat 图标

Vue 模板:如何自动将自定义属性添加到具有 v-on:click 指令的元素

为 Angular 指令添加多个“要求”选项

将 HTML 类设置为托管在 Angular 指令中

[Angular Tutorial] 14 -Animations

类的绑定方法