nous venons de mettre à jour notre application vers angular 7 et nous avons remarqué que tous les modaux ngBootstrap ont maintenant une mise au point automatique par défaut sur le bouton de fermeture comme l'image suivante.
voici mon code:
code modal html:
<form [formGroup]="storeForm" novalidate>
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal Test</h4>
<button type="button" class="close" aria-label="Close"
(click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h4>Todo</h4>
</div>
<div class="modal-footer">
<button role="button" type="submit" class="btn btn-primary"
(click)="activeModal.close('Finish click')" prevent-double-
submit>{{ 'store.add.finish' | translate }}</button>
</div>
</div>
</form>
et comment s'appelle le modal grâce à mon composant.ts
const modal = this._modalService.open(ModalComponent, { backdrop:
'static', size: 'lg'});
modal.result.then(
(data) => {
// some code
},
() => {
}
);
Ma question est de savoir comment puis-je supprimer cette mise au point automatique par défaut qui ne correspond pas à notre comportement attendu?
Merci pour la lecture et veuillez pardonner les fautes d'orthographe.
La concentration doit être dans le mode modal pour des raisons d'accessibilité et de navigation au clavier. Par défaut, le focus est sur le premier élément focusable dans modal, qui dans votre cas est le bouton de fermeture. Vous pouvez ajouter l'attribut ngbAutofocus
à l'élément où vous souhaitez placer le focus.
<button type="button" ngbAutofocus class="btn btn-danger"
(click)="modal.close('Ok click')">Ok</button>
Vous pouvez en savoir plus sur github
C'est un vilain hack, mais vous pouvez ajouter un élément non visible comme premier élément:
<input type="text" style="display:none" />
Si le bouton de fermeture ne vous dérange pas, mais que vous souhaitez vous débarrasser du contour laid, vous pouvez utiliser outline: none
.
template.html
:
<button type="button" aria-label="Close">Close</button>
styles.css
:
button[aria-label="Close"]:focus {
outline: none;
}
Ajouter style="outline:
none; "à votre bouton de fermeture
Exemple :
<button type="button" class="close" aria-label="Close" (click)="modal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>