Live le jeudi 30 octobre à 19h - Interview avec Gérôme Grignon

Développeur front-end et figure de la communauté Angular

Découvrez le parcours de Gérôme Grignon, développeur front-end, contributeur open source et membre actif de la communauté Angular en France.

Dans cette interview, il partage son cheminement personnel et professionnel : de sa découverte du front-end à son engagement dans la pédagogie et la transmission.

Skip to content

Vous souhaitez recevoir de l'aide sur ce sujet ? rejoignez la communauté Angular.fr sur Discord.

Les Style Bindings dans Angular

Tout comme les classes, Angular permet également de manipuler directement les styles CSS de manière dynamique. C'est comme avoir un styliste qui ajuste en temps réel la tenue d'une personne en fonction des circonstances !

1. Liaison d'une propriété style unique

La syntaxe la plus simple pour lier un style est d'utiliser [style.propriété]="valeur".

ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-user',
  standalone: true,
  template: `
    <div [style.display]="isVisible ? 'block' : 'none'">
      {{ user.name }}
    </div>
  `
})
export class UserComponent {
  isVisible = true;
}

2. Liaison avec unités

Pour les propriétés qui nécessitent des unités, Angular propose une syntaxe spéciale :

ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-user',
  template: `
    <div [style.height.px]="cardHeight">
      {{ user.name }}
    </div>
  `
})
export class UserComponent {
  cardHeight = 200;
}

ASTUCE

Cette syntaxe évite d'avoir à concaténer l'unité manuellement. Angular s'en charge pour nous !

3. Liaison multiple avec une chaîne de caractères

ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-user',
  template: `
    <div [style]="userCardStyles">
      {{ user.name }}
    </div>
  `
})
export class UserComponent {
  userCardStyles = 'display: flex; padding: 16px; background-color: #f5f5f5';
}

4. Liaison avec un objet de styles

ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-user',
  template: `
    <div [style]="userStyles">
      {{ user.name }}
    </div>
  `
})
export class UserComponent {
  userStyles = {
    display: 'flex',
    padding: '16px',
    backgroundColor: 'var(--primary-color)',
    fontSize: '1.2rem'
  };
}

ATTENTION

Comme pour les classes, lors de l'utilisation d'un objet pour les styles, Angular utilise l'opérateur === pour la détection des changements. Pour appliquer des modifications, il faut créer une nouvelle instance de l'objet.

5. Combinaison des approches

On peut combiner différentes approches de style binding :

ts
@Component({
  template: `
    <div [style]="baseStyles"
         [style.color]="textColor"
         [style.font-size.px]="fontSize">
      {{ user.name }}
    </div>
  `
})

BONNES PRATIQUES

  • Utilisez la liaison simple ([style.propriété]) pour les styles dynamiques isolés
  • Préférez l'approche objet pour gérer plusieurs styles dynamiques
  • Gardez les styles statiques dans vos fichiers CSS
  • Utilisez des variables CSS (custom properties) pour une meilleure maintenabilité

PRÉCAUTION

En cas de conflit entre plusieurs bindings de style sur la même propriété, Angular applique des règles de précédence pour déterminer quel style sera appliqué.