NgStyle: changer le style CSS avec Angular

angular directives

Dans cet article, vous allez découvrir comment affecter dynamiquement du style CSS à des éléments HTML du DOM avec le framework Angular. Je vais vous présenter différentes méthodes pour attribuer dynamiquement un style CSS à un élément à l’aide de la propriété style. Libre à vous ensuite de choisir celle qui vous convient le mieux.

Ajouter des styles CSS avec Angular

Pour comprendre comment fonctionne a gestion dynamique des styles CSS dans Angular, il est important de déjà savoir comment cela ce fait avec du Javascript. Pour ce faire, il faut modifier la propriété style d’un element HTML que l’on à identifier dans le DOM.

document.querySelector('#myDiv').style.color = 'red';

Maintenant on peut regarder comment on gère les style CSS avec Angular.

<div [style.color]="'red'">My DIV to style with Angular</div>

Pour les propriétés composée de plusieurs mot, bah vous faite comme vous feriez avec du CSS normal…

<div [style.background-color]="'red'">My DIV to style with Angular</div>

Et si vous avez plusieurs propriétés à styliser vous pouvez faire ainsi:

<div [style.background-color]="'red'" [style.color]="'white'">My DIV to style with Angular</div>

Voilà pour la l’explication basic et la demo. Maintenant que cela est maitrisé, regardons comment utiliser une propriété dynamique pour assigner un style CSS à un element du DOM.

Assigner une valeur dynamique pour modifier le style CSS d’un element du DOM avec Angular

import { Component } from '@angular/core'

@Component({
  selector: 'my-app',
  template: `
    <div [style.color]="color">My DIV to style with Angular</div>
  `,
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  color = 'red'
}

Super simple non? Pour utiliser des valeurs dynamique c’est sans guillemets simples supplémentaires, alors que pour des valeurs statiques ils faut les guillemets.

Gestion des conditions pour assigner un style CSS

Avec Angular il est évidement possible de définir des style CSS en fonction de condition. Voici comment cela s’écrit:

import { Component } from '@angular/core'

@Component({
  selector: 'my-app',
  template: `
    <div [style.color]="flag ? colorA : colorB">
      My DIV to style with Angular
    </div>
  `,
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  flag = false;
  colorA = 'red';
  colorB = 'blue';
}

Maintenant que tous cela est bien clair pour vous, je vais vous montrer comment utiliser la directive NgStyle de Angular pour ajouter des style CSS aux element du DOM.

Gestion des styles avec la directive NgStyle

Lors de l’attribution de nombreux styles différents à un élément du DOM, la syntaxe devient assez déroutante et encombrée. C’est pourquoi il existe une manière différente d’attribuer des styles dans Angular à l’aide de la Directive NgStyle. Voici comment cela fonctionne pour les valeur statique:

<div [ngStyle]="{'color': 'red'}">My DIV to style with Angular</div>

Et voici comment cela fonctionne pour l’attribution de valeur dynamiques:

import { Component } from '@angular/core'

@Component({
  selector: 'my-app',
  template: `
    <div [ngStyle]="{
          'color': flag ? colorA : colorB;
          'background-color': !flag ? colorA : colorB;
     }">My DIV to style with Angular</div>
  `,
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  flag = false;
  colorA = 'red';
  colorB = 'blue';
}

Rien de bien méchant hein?? Alors maintenant c’est à vous de jouer et d’utiliser la Directive NgStyle pour la gestion dynamique des style.

Conclusion

J’espère que cet article vous aidera à mieux comprendre comment fonctionne l’assignation dynamique de style avec Angular.

L’utilisation de la Directive NgStyle permet d’assigner dynamiquement des valeurs pour changer le style d’un element du DOM. C’est une manière très simple de modifier l’apparence de l’interface utilisateur en fonction de ces preference.

N’hésité pas aussi à consulter les autres articles traitant d’Angular, vous y trouverez certainement un sujet qui attirera votre attention.

Et si vous avez besoin de support pour votre projet, je vous invite vous rendre sur le lien suivant pour définir ensemble une solution de support qui vous convienne.