USAGE
::ng-deep
, >>>
et /deep/
désactive l'encapsulation des vues pour des règles CSS spécifiques, en d'autres termes, elle vous donne accès à des éléments DOM qui ne figurent pas dans le HTML de votre composant. Par exemple, si vous utilisez Angular Material (ou toute autre bibliothèque tierce comme celle-ci), certains éléments générés sont en dehors de la zone de votre composant (tels que dialogue ) et vous ne pouvez pas accéder à ces éléments directement ou en utilisant une méthode CSS classique. Si vous voulez modifier les styles de ces éléments, vous pouvez utiliser l'une de ces trois choses, par exemple :
::ng-deep .mat-dialog {
/* styles here */
}
Pour l'instant, l'équipe d'Angular recommande de faire "profond" manipulations uniquement avec EMULÉ l'encapsulation de la vue.
DEPRECATION
"profond" les manipulations sont en fait déprécié aussi, MAIS cela fonctionne encore pour l'instant, car Angular prend en charge le prétraitement (ne vous précipitez pas pour refuser les ::ng-deep
aujourd'hui, jetez un coup d'œil à pratiques de dépréciation premier).
Quoi qu'il en soit, avant de suivre cette voie, je vous recommande de jeter un coup d'oeil sur désactivation de l'encapsulation de la vue (qui n'est pas idéale non plus, car elle permet à vos styles de s'infiltrer dans d'autres composants), mais dans certains cas, c'est une meilleure solution. Si vous avez décidé de désactiver l'encapsulation de la vue, il est fortement recommandé d'utiliser des classes spécifiques pour éviter l'intersection des règles CSS, et enfin, éviter le désordre dans vos feuilles de style. Il est très facile de désactiver l'encapsulation directement dans le composant .ts
fichier :
@Component({
selector: '',
template: '',
styles: [''],
encapsulation: ViewEncapsulation.None // Use to disable CSS Encapsulation for this component
})
Vous pouvez trouver plus d'informations sur l'encapsulation de la vue dans ce article.
0 votes
Depuis
/deep/
et::ng-deep
sont toutes deux dépréciées, je vous suggère de consulter cette réponse stackoverflow.com/a/49308475/2275011 et commentaires pour plus de détails et de solutions.