How to add/remove class from directive

后端 未结 4 693
误落风尘
误落风尘 2020-12-16 15:16

Using a custom directive how would you add/remove a class on the host element based on a specific conditions?

Example:



        
4条回答
  •  时光说笑
    2020-12-16 16:01

    If you don't want to use the ngClass directive (Hint: you can pass a function to [ngClass]="myClasses()" if it would be to messy inline in your template) you can just utilize the Renderer2 for it to add one or more classes:

    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);
       }
    
    }
    

提交回复
热议问题