>  기사  >  웹 프론트엔드  >  내 CSS가 Angular의 InnerHTML 콘텐츠에 적용되지 않는 이유는 무엇입니까?

내 CSS가 Angular의 InnerHTML 콘텐츠에 적용되지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-27 05:27:03388검색

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

Angular의 InnerHTML 콘텐츠에 CSS가 적용되지 않는 이유는 무엇입니까?

Angular에서는 innerHTML 속성 포즈를 사용하여 HTML 콘텐츠를 뷰에 삽입합니다. 문제: 스타일이 예상대로 적용되지 않을 수 있습니다. 이는 외부 스타일이 구성 요소 내의 콘텐츠를 방해하는 것을 방지하는 Angular의 캡슐화 메커니즘 때문입니다.

Shadow DOM 캡슐화 이해

기본적으로 Angular는 에뮬레이트된 캡슐화를 사용합니다. Shadow DOM을 생성하고 구성요소 스타일을 분리합니다. 따라서 innerHTML에 의해 삽입된 HTML 내에서 구성 요소 범위 외부에 정의된 스타일은 무시됩니다.

해결 방법: 캡슐화를 없음으로 변경

이 문제를 해결하려면 구성 요소에서 캡슐화를 없음으로 설정하여 Angular의 캡슐화를 재정의할 수 있습니다. 이렇게 하면 삽입된 HTML 콘텐츠에 외부 소스의 스타일을 적용할 수 있습니다.

예는 다음과 같습니다.

<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>

캡슐화를 None으로 설정하면 Angular의 Shadow DOM을 비활성화하고 CSS를 허용합니다. 삽입된 HTML 내에서 적용됩니다. 결과적으로 삽입된 HTML div 내의 텍스트는 파란색 배경색으로 렌더링됩니다.

위 내용은 내 CSS가 Angular의 InnerHTML 콘텐츠에 적용되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.