angular - 如何从指令中添加/删除类

标签 angular angular2-directives angular-directive

使用自定义指令,您将如何根据特定条件在宿主元素上添加/删除类?

示例:

@Directive({
  selector: '[customDirective]'
})
export class CustomDirective {
  constructor(service: SomService) {
    // code to add class

    if (service.someCondition()) {
        // code to remove class
    }
  }
}

最佳答案

如果你不想使用 ngClass 指令(提示:你可以传递一个函数给 [ngClass]="myClasses()" 如果它是在你的模板中进行困惑的内联)你可以使用 Renderer2 为它添加一个或多个类:

export class CustomDirective {

   constructor(private renderer: Renderer2,
               private elementRef: ElementRef,
               service: SomService) {
   }

   addClass(className: string, element: any) {
       this.renderer.addClass(element, className);
       // or use the host element directly
       // this.renderer.addClass(this.elementRef.nativeElement, className);
   }

   removeClass(className: string, element: any) {
       this.renderer.removeClass(element, className);
   }

}

关于angular - 如何从指令中添加/删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520681/

相关文章:

javascript - Angular 6 服务和类继承

angular - 无法显示 Firebase 数据

angular - 如何在单击从组合框中选择项目时实现事件

angular - 自定义指令在 Angular 模块内不起作用?

javascript - 为什么元素列表没有显示?

javascript - Angular 2,如何使用服务在组件之间共享数组数据?

angular2 - 在组件之间传递数据对象

angular - 指令中的选择器

Angular 2 RC 5 Bootstrap 自定义 HTTP 类 TypeError : Cannot read property 'toString' of null

javascript - AngularJS 中隔离作用域指令和 $observer