addClass
方法不起作用
一些HTML
<div addClassDir class="my-class-{{smth}}"></div>
在addClassDir
内
ngOnInit() {
this.renderer.addClass(this.elementRef.nativeElement, 'new-class');
}
我知道class="my-class-{{smth}}"
不是Angular的方式,但是我不知道人们如何使用我的指令。无论如何,它应该可以工作,但不能。最正确的方法是什么?
答案 0 :(得分:0)
您不需要渲染器来添加类。利用NgClass
语法和HostBinding
指令。
export class MyDirective {
@HostBinding('class.my-directive-class') customClass = true;
constructor() { }
}
答案 1 :(得分:0)
很少有正确的方法可以做到这一点。这取决于您要实现什么。
export class MyComponent {
@HostBinding('class.valid') get valid() { return this.control.valid; }
@HostBinding('class.my-class') myClass = true;
@HostBinding('class') class = 'box';
}
<some-element [ngClass]="'first second'">...</some-element>
<some-element [ngClass]="['first', 'second']">...</some-element>
<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element>
<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>
<some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element>
<div [class.active]="isActive">
...
</div>
答案 2 :(得分:0)
添加您的组件
isTrueNewClass = false;
ngOnInit() {
this.isTrueNewClass = true;
}
您的模板
<some-element [ngClass]="{'new-class new-class2' : isTrueNewClass }">...</some-element>
OR
<div class="prevclass1 prevclass2" [ngClass]="{'new-class new-class2' : isTrueNewClass }">...</div>