Die ShadowDom-Kapselung hängt eine echte Shadow-DOM-Wurzel an das Host-Element und liefert eine vom Browser erzwungene echte Stilisolation statt Angulars standardmäßiger attributbasierter Simulation mit _ngcontent-Selektoren. Das ist relevant, wenn die Komponente in eine Host-Seite mit unbekanntem, potenziell kollidierendem globalen CSS eingebettet wird, da die Shadow-DOM-Grenze verhindert, dass äußere Styles eindringen und umgekehrt. Der Kompromiss ist, dass globale Styles wie Bootstrap-Resets innen nicht mehr gelten, während CSS Custom Properties wie --badge-color die Grenze bewusst durchdringen und damit den zulässigen Kanal für externes Theming bilden.
import { Component, ViewEncapsulation } from '@angular/core';@Component({selector: 'app-widget-embed',standalone: true,encapsulation: ViewEncapsulation.ShadowDom,styles: [`:host {display: block;contain: content;}.badge {font-family: system-ui;color: var(--badge-color, #333);}`],template: `<span class="badge"><ng-content></ng-content></span>`,})export class WidgetEmbedComponent {}