web-dev-qa-db-fra.com

Comment ajouter/supprimer une classe de la directive

J'ai une directive personnalisée qui devrait pouvoir ajouter/supprimer une classe en fonction d'autres conditions.

C'est à dire.

// imports 

@Directive({
    selector: '[customDirective]'
})

export class CustomDirective {
    constructor(service: SomService) {
        // code to add class

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

Si vous ne souhaitez pas utiliser la directive ngClass (Conseil: vous pouvez transmettre une fonction à [ngClass]="myClasses()" si ce serait trop compliqué dans votre modèle), vous pouvez simplement utiliser le Renderer2 pour ajouter une ou plusieurs 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);
   }

}
18
lexith
export class CustomDirective {
   classname:string = "Magenta";

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

   addClass(className: string, element: any) {
        // make sure you declare classname in your main style.css
        this.renderer.addClass(this.elementRef.nativeElement, className);
   }

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

}
0
Michael Ganesan