Щоб обійти застаріле ::ng-deep
, я зазвичай відключаю ViewEncapsulation
. Хоча це не найкращий підхід, він мені добре послужив.
Щоб вимкнути ViewEncapsulation
, виконайте у своєму компоненті наступне:
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class HeaderComponent {
}
Це зробить стилі .scss у цьому компоненті глобальними для всієї програми. Щоб не дозволити стилям підніматися по ланцюжку до батьківського та братського компонентів, оберніть весь scss селектором так:
app-header {
}
Тепер стилі, зазначені тут, перейдуть до дочірніх компонентів, тому вам слід бути особливо конкретними з вашими селекторами css і пам’ятати про свої значення p та q при додаванні CSS (можливо, додати дочірній селектор, вказаний у вашому додатку Angular, а потім його стилі).
Я вважаю, що це не найкращий підхід із-за абзацу вище, але це мені добре допомогло.
::ng-deep
нікуди не йде. Це завжди буде налаштування, яке ви можете ввімкнути. Зараз вони абсолютно ніяк не можуть це видалити без масивної реакції громади. Подивіться, скільки результатів повертається для цього пошуку github.com/search?q=%3A%3Ang-deep&type=Code - це все одно, що сказати, що!important
властивість css зникне