Angular - 5.10-En savoir plus sur l'encapsulation des vues
Dans la leçon précédente, nous avons vu comment Angular isole le CSS d'un composant.
Ce comportement peut être désactivé ou changé via la propriété
encapsulation du décorateur @Component. Il faut d'abord
importer l'enum ViewEncapsulation depuis @angular/core,
puis lui passer une des trois valeurs disponibles.
Les trois modes disponibles
ViewEncapsulation.Emulated: c'est le mode par défaut, celui qui ajoute les attributs_ngcontent-...pour simuler le shadow DOM ;ViewEncapsulation.None: aucune encapsulation. Le CSS du composant devient global. Si on définit dans le CSS deServerElementComponentque leslabelsont rouges, ce style affectera tous leslabelde l'application, y compris ceux d'autres composants ;ViewEncapsulation.ShadowDom: utilise le shadow DOM natif du navigateur. Donne un résultat équivalent àEmulated, mais uniquement dans les navigateurs qui prennent en charge cette technologie.
Exemple d'utilisation dans le décorateur :
@Component({
selector: 'app-server-element',
templateUrl: './server-element.component.html',
styleUrls: ['./server-element.component.css'],
encapsulation: ViewEncapsulation.None
})
export class ServerElementComponent { }
Le mode None peut occasionnellement être pratique pour publier des styles
globaux depuis un composant, mais dans la majorité des cas Emulated reste
le meilleur choix — c'est lui qui offre la portabilité maximale entre navigateurs et
garantit qu'un composant ne pollue pas les autres. L'essentiel est de savoir que ce
comportement par défaut peut être modifié au besoin.