Я пытаюсь инициализировать компонент с Shadow DOM или без него на основе браузера (поскольку IE не поддерживает Shadow DOM).
Я проверяю, является ли это IE11, и устанавливаю инкапсуляцию на Emulated
для IE и ShadowDom
для других браузеров.
const agent = window.navigator.userAgent;
const isIe11 = agent.indexOf('MSIE') === -1 && agent.indexOf('Trident') > 0;
@Component({
selector: 'my-web-component',
templateUrl: '...html',
styleUrls: ['...scss'],
encapsulation: isIe11 ? ViewEncapsulation.Emulated : ViewEncapsulation.ShadowDom
})
export class NavbarComponent implements OnInit { ... }
Значение isIe11
является правильным согласно возвращаемому значению проверки браузера, но инкапсуляция всегда заканчивается ViewEncapsulation.Emulated
.
Я подтвердил это через инспектор DOM, потому что я не вижу #shadow-root
в DOM. Вместо этого я вижу _ngcontent-c0
, который подтверждает, что инкапсуляция эмулируется.