Maison  >  Article  >  interface Web  >  Pourquoi mon CSS ne s'applique-t-il pas au contenu InnerHTML dans Angular ?

Pourquoi mon CSS ne s'applique-t-il pas au contenu InnerHTML dans Angular ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 05:27:03388parcourir

Why Doesn't My CSS Apply to InnerHTML Content in Angular?

Pourquoi CSS n'est-il pas appliqué au contenu InnerHTML dans Angular ?

Dans Angular, injecter du contenu HTML dans une vue à l'aide de la propriété innerHTML pose un problème : le style peut ne pas être appliqué comme prévu. Cela est dû au mécanisme d'encapsulation d'Angular, qui empêche les styles externes d'interférer avec le contenu d'un composant.

Comprendre l'encapsulation Shadow DOM

Par défaut, Angular utilise l'encapsulation émulée, créer un DOM fantôme et isoler les styles de composants. Par conséquent, les styles définis en dehors de la portée du composant, dans le HTML injecté par innerHTML, seront ignorés.

Solution : Remplacez l'encapsulation par Aucun

Pour résoudre ce problème, vous peut remplacer l'encapsulation d'Angular en définissant l'encapsulation sur None dans votre composant. Cela permettra d'appliquer des styles provenant de sources externes au contenu HTML injecté.

Voici un exemple :

<code class="typescript">import { Component, ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'example',
  styles: ['.demo {background-color: blue}'],
  template: '<div [innerHTML]="someHtmlCode"></div>',
  encapsulation: ViewEncapsulation.None,
})
export class Example {
  someHtmlCode = `<div class="demo"><b>This is my HTML.</b></div>`;
}</code>

En définissant l'encapsulation sur Aucun, nous désactivons le shadow DOM d'Angular et autorisons le CSS de dans le HTML injecté pour prendre effet. En conséquence, le texte dans le div HTML injecté sera rendu avec une couleur d'arrière-plan bleue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn