En regardant le ngx-bootstrap code source ici:
Il y a une option class property
défini comme class?: string;
.
Quelle est la façon de l'utiliser?
Est-il possible d'ajouter une classe personnalisée comme:
this.modalService.config.class = 'myClass';
Avant d'utiliser le servive comme par exemple:
this.modalRef = this.modalService.show(template, {
animated: false
});
De cette façon, je pense que nous pouvons ajouter du CSS personnalisé au modal affiché
J'ai essayé d'ajouter une classe personnalisée sans succès.
Cette propriété de classe n'est pas un tableau, le cas échéant, cela signifie-t-il que nous ne pouvons ajouter qu'une seule classe personnalisée?
Démo: en ajoutant et en remplaçant la classe modal
, le modal n'est pas affiché
https://stackblitz.com/edit/ngx-bootstrap-3auk5l?file=app%2Fapp.component.ts
L'ajout de la classe modal
de cette façon n'aide pas:
this.modalRef = this.modalService.show(template, Object.assign({},
this.config, { class: 'gray modal-lg modal' }));
https://stackblitz.com/edit/ngx-bootstrap-awmkrc?file=app%2Fapp.component.ts
Selon le ngx-bootstrap documentation sur le composant Modal (voir l'onglet composant), vous pouvez ajouter un membre class
à l'objet config.
Important : Étant donné que l'élément modal est en dehors de l'élément de composant dans le code HTML rendu, l'encapsulation CSS doit être désactivée pour le composant ou les attributs de style pour la classe doit être spécifié dans un autre fichier, pour vous assurer que les styles sont appliqués à l'élément modal.
L'extrait de code ci-dessous peut être exécuté dans ce stackblitz .
import { Component, TemplateRef, ViewEncapsulation } from '@angular/core';
import { BsModalService, BsModalRef } from 'ngx-bootstrap';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
modalRef: BsModalRef;
config = {
animated: true,
keyboard: true,
backdrop: true,
ignoreBackdropClick: false,
class: "my-modal"
};
constructor(private modalService: BsModalService) { }
openModal(template: TemplateRef<any>) {
this.modalRef = this.modalService.show(template, this.config);
}
}
avec un fichier CSS comme celui-ci:
.my-modal {
border: solid 4px blue;
}
.my-modal .modal-header {
background-color: Lime;
}
.my-modal .modal-body {
background-color: orange;
}
Mise à jour : Cette autre stackblitz montre un exemple de styles CSS importés d'un fichier externe dans styles.css
, permettant de conserver l'encapsulation CSS dans le composant.