在md-table md-row中使用渲染器有条件地添加css类是行不通的

时间:2017-07-23 14:45:03

标签: javascript angular typescript nodes angular-material2

我正在尝试使用Renderer在FRIDAY的{​​{1}}中添加css类,但它从未应用过。

这是我的代码。



md-row




1 个答案:

答案 0 :(得分:0)

是角度变化检测器。 我在复选框选择函数中添加了删除类函数,以便在检查时清除以前的css类,但angular检测到更改并在每次更改时触发此函数,如果我在上下文单击时添加css类,则在上下文中应用一次单击事件,但是当角度检测发生变化时,它会从复选框功能中删除。

复选框功能中的

我添加了这一行

$('md-row').removeClass('selected')

视图中的

<md-checkbox  color="primary"  
              (click)="$event.stopPropagation()" 
              (change)="$event ? selection.toggle(row.id) : null" 
              [checked]="selection.isSelected(row.id)">
</md-checkbox>

每次角度变化检测器运行时都会触发remove类,所以我在上下文单击后立即添加类,然后删除。我删除了这一行$('md-row').removeClass('selected')并重构了这个:

this.selection.onChange.takeUntil(this.unsubscribe$).subscribe(d => {
        if (this.selection.selected.length > 0) {
            // clean  onContext css classes.
            let elems = document.getElementsByTagName('md-row');
            for (let i = 0, len = elems.length; i < len; i++) {
                let classes = elems[i].classList;
                if (classes.contains('selected'))
                    classes.remove('selected');
        }  
     }
});