Angular2(RC.6)renderer.setElementClass设置isAdd为false不起作用

时间:2016-09-21 22:50:53

标签: angular angular-directive

我有以下指令,在检查视图后,它会向元素checkbox-unselected添加一个类。然后,当单击该元素时,它会调用一个方法,该方法应该删除类checkbox-unselected并将其替换为另一个类checkbox-selected。虽然新课程按预期添加,但旧课程未被删除。我无法找到关于此方法的任何文档,但是从我能够断言将第三个参数isAdd的值设置为false应该告诉方法删除提供的类,但这不会发生。

export class SharedCustomCheckboxDirective implements AfterViewChecked {
  @Input('cmgSharedCustomCheckbox') isChecked: string;

  constructor(  private element: ElementRef,
                private renderer: Renderer ) { }

  public ngAfterViewChecked(): void {
    this.renderer.setElementClass(this.element.nativeElement.children[0], 'checkbox-unselected', true);
  }

  @HostListener('click') click(): void {
    if (this.isChecked !== 'true') {
      this.renderer.setElementClass(this.element.nativeElement.children[0], 'checkbox-unselected', false);
      this.renderer.setElementClass(this.element.nativeElement.children[0], 'checkbox-selected', true);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

问题是我使用AfterViewChecked引起的,后者被重复调用,在删除后将该类添加回元素。更改为AfterViewInit解决了问题。