Je dois supprimer le remplissage des cellules d'en-tête et des cellules corporelles ngx-datatable.
Ma solution actuelle ressemble à ceci:
.datatable-body-cell {
padding: 0 !important;
}
.datatable-header-cell {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
calendar.component.scss
@Component({
templateUrl: './calendar.component.html',
styleUrls: ['./calendar.component.scss'],
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
})
calendar.component.ts
Le problème que j'ai rencontré est que je dois désactiver ViewEncapsulation pour remplacer les classes CSS ngx-datatable datatable-body-cell et datatable-header-cell. Puisque j'utilise également ngx-datatable dans d'autres composants, le CSS reste remplacé lorsque je navigue vers les autres composants. Ce n'est que lorsque j'actualise que le CSS est affiché dans les autres composants.
Existe-t-il d'autres possibilités pour remplacer le code CSS d'une bibliothèque dans un composant sans affecter les autres composants?
J'utilise Angular 5.
Conservez l’encapsulation des composants par défaut et utilisez ng-deep
:Host ::ng-deep .datatable-body-cell {
padding: 0 !important;
}
https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep
Vous pouvez essayer de préfixer/isoler le code CSS. Cela signifie mettre par exemple une DIV autour du composant pour lequel vous voulez définir un style différent et lui donner une classe (prefix-css).
.prefix-css .datatable-body-cell {
padding: 0 !important;
}
.prefix-css .datatable-header-cell {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
Le code HTML ressemble alors à ceci:
<div class="prefix-css">
... here the code for your datatable
</div>
Vous pouvez rendre ces styles globaux et simplement affecter le code à l'intérieur de la div avec la classe 'prefix-css'.
Regardez cet exemple: https://stackblitz.com/edit/angular-qlkcs3