我有以下指令,在检查视图后,它会向元素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);
}
}
}
答案 0 :(得分:0)
问题是我使用AfterViewChecked引起的,后者被重复调用,在删除后将该类添加回元素。更改为AfterViewInit解决了问题。