在Angular指令中将HTML类设置为host

在Angular指令中将HTML类设置为host,angular,angular-directive,classname,angular2-hostbinding,Angular,Angular Directive,Classname,Angular2 Hostbinding,如何添加和设置一个HTML类,该类可以通过参数和角度指令进行更改? 假设我们有一个已经存在的类的div,但没有指令: <div class="myClass"></div> 现在,我们想给它附加一个指令和一个参数: <div directiveName set="X" class="myClass myClass-X"></div> 如果我需要4,则动态添加的类将更改为: &l

如何添加和设置一个HTML类,该类可以通过参数和角度指令进行更改? 假设我们有一个已经存在的类的div,但没有指令:

<div class="myClass"></div>

现在,我们想给它附加一个指令和一个参数:

<div directiveName set="X" class="myClass myClass-X"></div>

如果我需要4,则动态添加的类将更改为:

<div directiveName set="4" class="myClass myClass-4"></div>

我完全知道如何添加带有@hostbinding的类,但我找不到如何使用“set”参数动态更改这个类


非常感谢

如果我正确理解了您的问题,可以通过以下方式完成:

我是凭记忆做这件事的,也许有些事情没有按预期的那样起作用,但我想你已经明白了其中的要点

从'@angular/core'导入{Directive,ElementRef};
@指示({
选择器:“[directiveName]”
})
导出类highlight指令{
构造函数(el:ElementRef){
//检查元素是否具有“set”指令。
if('set'在el.nativeElement.attributes中){
//获取“set”属性。
const setAttribute=el.nativeElement.getAttribute('set');
//将类添加到元素中。
el.nativeElement.classList.add(setAttribute);
}
}
}
使用指令构造函数中的ElementRef将引用注入到宿主DOM元素,即应用了“directiveName”的元素


我建议您查看页面,它详细地解释了指令是如何工作的。

真的不知道您在问什么。你看过ngClass为html样式指定条件吗?我不太明白你的确切意思。是否要根据从指令内部传递到set属性的值添加类?@Keff!与Javascript中的类似:element.classList.add(“myclass-”+set),但在指令内部。因此,当没有指令存在时,就不需要这个类,或者ngClassI建议阅读这篇文章,它解释了如何访问ElementRef,然后您可以像在Vanilla JS.Ow中一样使用它!谢谢你,先生!这样做对我来说太容易了!