главное различие между тремя:
1- ViewEncapsulation.Emulated
это предварительная обработка кода CSS для глубокой области видимости компонента, чтобы предотвратить конфликт, и это режим по умолчанию для углового режима из-за ограниченной поддержки теневого домена в браузерах ... для поддержки браузера могу ли я использовать
2- ViewEncapsulation.Native
, который использует устаревшую версию shadow dom в соответствии с angular doc Read .
он работает почти так же, как инкапсуляция теневого дома
3- ViewEncapsulation.ShadowDom
когда вы используете ShadowDom
, почему стиль копируется в каждый # shadow-root, потому что именно так он работает ... когда вы активны ShadowDom
, это позволяет скрытым деревьям DOM присоединяться к обычное дерево это как дерево внутри обычного дерева DOM, поэтому оно копирует стиль, который применяется к элементам, создавая область высокого уровня, и то, что вы видите практически, является теневым домом, но теоретически это обычный DOM ...
для более подробной информации о Shadow Dom MDN статья
для лучшей практики и то, с чем рекомендует угловая команда, использует ViewEncapsulation.Emulated
, который используется по умолчанию, но в некоторых редких случаях вы используете None
или ShadowDom
, но используйте его с осторожностью.