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