Чтобы обойти устаревшее ::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 исчезнет,