2016-02-26 55 views
2

我在angular2中找到了nativeElement.classList.add()的替代方法。 (原始问题在这里描述:looking for nativeElement.classList.add() alternative如何在angular2中通过渲染器(或替代方法)获取类属性

但现在我想要在呈现新的类之前获得类属性。 因为如果颜色值发生变化,新的类将被添加,但旧的不会被删除。

所以我试图解决

<button md-button color="accent" class="myClass"></button> 

<button md-button color="accent" class="myClass md-accent"></button> 

当颜色属性更改警告,它应该呈现

<button md-button color="warn" class="myClass md-warn"></button> 

现在它呈现

<button md-button color="warn" class="myClass md-accent md-warn"></button> 

所以我试图做的是:在更新this.color_之前,删除md-this.color_类。

@Input() 
set color(value: string) { 
    // READ CLASS ATTRIBUTE HERE, SO I CAN REMOVE THE OLD md-this.color_ 
    this.color_ = value; 

    this.renderer.setElementClass(this.elementRef, 'md-' + this.color_, true); 
} 

通过nativeElement获取属性不是一个选项,因为这在webworkers中不起作用。

任何想法的?

+0

盲目删除它你就不能调用'this.renderer.setElementClass(this.elementRef删除它,“MD-” + this.color_,假);'? –

回答

2

我猜你只需要与

this.renderer.setElementClass(this.elementRef.nativeElement, 'md-' + this.color_, false); 
+0

哦不...... :-)就这么简单。 – BakGat

+0

这确实消除了这个类。但是当它是列表中的最后一个类时,元素上的class属性保持为空,这是无效的html。这是Angular中的一个错误。在这种情况下,该属性可以移除吗? – BakGat

+0

似乎没有办法。无论您使用哪种方式更新类,Angular在最后一个类被移除时都会留下'class'。解决方法是添加一些您只是忽略的虚拟类,但防止列表变空。 –

相关问题