Angular2渲染器setElementClass isAdd选项不起作用

Rom*_*ert 6 angular

为什么这不起作用,如文档中所述?

renderer.setElementClass(el, 'class1', false); // replace class
renderer.setElementClass(el, 'class2', true); // add a class
Run Code Online (Sandbox Code Playgroud)

这导致元素只有class2两个而不是两个.

参考Angular2渲染器文档

Rom*_*ert 11

事实证明,该isAdd选项相当于删除类,因此以下适用于切换类:

renderer.setElementClass(el, 'class1', false); // remove class1
renderer.setElementClass(el, 'class2', true); // add class2
Run Code Online (Sandbox Code Playgroud)

哦,setElementClass当然要调用一种删除它的方法并不奇怪......


tam*_*ira 11

只是提到Renderer现在已被弃用,并已被Renderer2取代.在Renderer2类中,有两种方法可替换已弃用的Renderer 的setElementClass.

  • 要添加一个类:

    renderer.addClass(this.elementRef.nativeElement, 'popup');

  • 要删除一个类:

    renderer.removeClass(this.elementRef.nativeElement, 'popup');

有关更多信息,请参阅:https://angular.io/api/core/Renderer2

有关教程形式的代码示例,请参阅:https://alligator.io/angular/using-renderer2/ ,特别是'addClass/removeClass'部分