Um das Veraltete zu umgehen ::ng-deep, deaktiviere ich normalerweise ViewEncapsulation. Obwohl dies nicht der beste Ansatz ist, hat er mir gute Dienste geleistet.
Gehen Sie zum Deaktivieren ViewEncapsulationin Ihrer Komponente wie folgt vor:
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class HeaderComponent {
}
Dadurch werden die .scss-Stile in dieser Komponente für die gesamte Anwendung global. Um nicht zuzulassen, dass die Stile die Kette zu übergeordneten und geschwisterlichen Komponenten hinaufgehen, wickeln Sie den gesamten scss wie folgt mit dem Selektor ein:
app-header {
}
Die hier angegebenen Stile werden nun auf untergeordnete Komponenten übertragen, sodass Sie beim Hinzufügen von CSS besonders auf Ihre CSS-Selektoren achten und auf Ihre Ps und Qs achten müssen (fügen Sie möglicherweise die in Ihrer Angular-App angegebene untergeordnete Auswahl und dann deren Stile hinzu).
Ich sage, es ist aufgrund des obigen Absatzes nicht der beste Ansatz, aber das hat mir gute Dienste geleistet.
::ng-deepgeht nirgendwo hin. Es wird immer eine Einstellung sein, die Sie aktivieren können. Es gibt absolut keine Möglichkeit, es jetzt ohne massive Community-Gegenreaktionen zu entfernen. Schauen Sie sich an, wie viele Ergebnisse für diese Suche zurückkommen. Github.com/search?q=%3A%3Ang-deep&type=Code - es ist, als würde man sagen, dass die CSS-!importantEigenschaft verschwinden wird