Essayer de centrer ce modal ngx-boostrap en utilisant CSS comme ceci mais cela ne fonctionne pas:
.modal.fade.in{
display: flex;
justify-content: center;
align-items: center;
}
Mais dans l'outil de développement, je peux ajouter du CSS comme ceci:
.modal.dialog{
top: 50%
}
Donc au moins, il est centré verticalement, mais cela se trouve dans l'outil de développement et il n'y a pas de .modal.dialog
class dans le modèle html
Est-il possible de centrer correctement le modal ngx-bootstrap?
Je souhaite créer un composant modal générique à utiliser n'importe où, en fournissant un message d'entrée, en ajoutant une boîte de dialogue oui/non et en indiquant le choix de l'utilisateur (à l'aide de EventEmitter).
J'ai trouvé un exemple dans le Plunker suivant, mais je ne suis pas en mesure de le reproduire dans un composant personnalisé distinct.
L'exemple plunker provient de ce site Web: https://github.com/valor-software/ngx-bootstrap/issues/2334
Mise à jour:
Après la réponse de @Wira Xie, lorsque j'utilise le modal statique et ce CSS:
.modal-sm
{
top: 50%;
left: 50%;
width:30em;
height:18em;
background-color: rgba(0,0,0,0.5);
}
Le modal est centré, mais seul le Esc key
peut le masquer. Ainsi, lorsque je clique en dehors du modal, il est toujours visible.
Essayez d'ajouter cet attribut à votre CSS: vertical-align: middle
à votre classe .modal.dialog
.modal.fade {
display: flex !important;
justify-content: center;
align-items: center;
}
.modal-dialog {
vertical-align:middle;
height:18em;
background-color: rgba(0,0,0,0.5);
}
Pourquoi ne pas utiliser bootstrap modal-dialog-centered
class:
this.modalRef2 = this.modalService.show(ModalContentComponent,
{
class: 'modal-dialog-centered', initialState
}
);
dans le fichier .ts vous avez un code comme celui-ci (pour ouvrir un popup modal) ...
private showModal(template: TemplateRef<any>): BsModalRef {
return this.modalService.show(template, {class: 'modal-lg modal-dialog-centered', ignoreBackdropClick: true, keyboard: false});
}
Vous pouvez voir que j'ai ajouté modal-dialog-centré à la classe. Après cela, vous pouvez également modifier la classe centrée sur le dialogue modal dans votre css.
Vous devez utiliser la classe bootstrap .
Ajoutez
.modal-dialog-centered
à.modal-dialog
pour centrer le modal verticalement.
import { Component, OnInit, TemplateRef } from '@angular/core';
import { BsModalService } from 'ngx-bootstrap/modal';
import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
@Component({
...
})
export class ModalComponent {
modalRef: BsModalRef;
// Here we add another class to our (.modal.dialog)
// and we need to pass this config when open our modal
config = {
class: 'modal-dialog-centered'
}
constructor(private modalService: BsModalService) { }
openModal(template: TemplateRef<any>) {
// pass the config as second param
this.modalRef = this.modalService.show(template, this.config);
}
}