如何将“class”添加到主机元素?

284

我不知道如何在组件的模板html(component.html)中添加动态class属性到<component></component>标签中。

我找到的唯一解决方案是通过“ElementRef”本机元素修改项目。但这个解决方案似乎有些复杂,做起来应该很简单。

另一个问题是CSS必须在组件范围之外定义,打破了组件封装性。

是否有更简单的解决方案?像<root [class]="..."> .... </ root>这样在模板中。

11个回答

-5

这是我是如何做到的(Angular 7):

在组件中,添加一个输入:

@Input() componentClass: string = '';

然后在组件的 HTML 模板中添加类似以下内容:

<div [ngClass]="componentClass">...</div>

最后,在实例化组件的 HTML 模板中:

<root componentClass="someclass someotherclass">...</root>

声明:我对Angular还比较新,所以可能只是碰巧做对了!


3
有点严谨但有点过时了:这并不会将CSS类添加到宿主元素中-即<root>标签的元素,而不是您添加到元素模板中的任何内容。 - millimoose
这个答案与问题无关。他需要知道如何给宿主元素添加类。这可以通过@component装饰器中的host属性来实现。 - Kyrolus Kamal Fahim Sous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接