Стили и шаблоны компонента

Инкапсуляция представления

CSS стили компонента инкапсулируются в представление компонента и не влияют на остальную часть приложения.

Чтобы управлять тем, как эта инкапсуляция выполняется для каждого компонента, вы можете установить режим инкапсуляции в метаданных компонента с помощью параметра encapsulation.

Выберите один из следующих режимов:

  • Native- Инкапсуляция представления использует встроенную shadow DOM реализацию браузера для прикрепления shadow DOM к хост элементу компонента, а затем помещает представление компонента внутри этого shadow DOM. Стили компонента включены в shadow DOM.
  • Emulated - значение по дефолту. Инкапсуляция представления эмулирует поведение shadow DOM путем предварительной обработки (и переименования) кода CSS, чтобы эффективно охватить CSS для представления компонента.

  • None - Означает, что Angular не инкапсулирует представление. Angular добавляет CSS к глобальным стилям. Правила определения, изоляции и защиты, о которых говорилось выше, не применяются. Это по существу то же самое, что вставить стили компонента в HTML-код.

Чтобы установить режим инкапсуляции компонентов, используйте свойство инкапсуляции в метаданных компонента

encapsulation: ViewEncapsulation.Native

Native инкапсуляция работает только в браузерах, имеющих встроенную поддержку shadow DOM (На данным момент только Chrome). Так как поддержка ограничена, поэтому Emulated view encapsulation является режимом по умолчанию и рекомендуется в большинстве случаев.

Примерencapsulation: ViewEncapsulation.Emulated:

<body>
  <div class="test">Test!</div>
  <my-app _nghost-cmy-1="">
    <div _ngcontent-cmy-1="" class="test">
      <div _ngcontent-cmy-1="">
        Title: Hello!
      </div>
      <input _ngcontent-cmy-1="" type="text" class="ng-untouched ng-pristine ng-valid">
    </div>
  </my-app>
</body>
.test[_ngcontent-cmy-1] {
  padding: 10px;
}
.test {
  background: green;
}

Существует два типа генерируемых атрибутов:

  • Элемент, который будет shadow DOM хостом, имеет сгенерированный атрибут _nghost.
  • Элемент в представлении компонента имеет атрибут _ngcontent, который идентифицирует, к какому эмулированному shadow DOM хосту принадлежит этот элемент.

results matching ""

    No results matching ""