Ich habe mehrere Fragen und Antworten zu diesem Problem gelesen und alle Vorschläge stellen eine sehr einfache Lösung dar: Fügen Sie
in das HTML-Tag der Schaltfläche ein, die für das Öffnen des Modals verantwortlich istdata-backdrop="static" data-keyboard="false"
Für mich ist dieser Button:
<button type="button" class="btn btn-primary btn-danger m-2" data-bs-toggle="modal" data-bs-target="#exampleModal" data-backdrop="static" data-keyboard="false" (click)="onDelete(object.id)"><fa-icon [icon]="faTrash"></fa-icon></button>
Die komplette Modalbox ist:
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <!-- <h5 class="modal-title text-center" id="exampleModalLabel">Biztosan törölni akarod?</h5> --> <button type="button" #closeButton class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <h5 class="modal-title text-center" id="exampleModalLabel">Biztosan törölni akarod?</h5> <p class="text-center">A törlés megerősítésével az adatbázisból is eltávolításra kerül a rekord.</p> </div> <div class="modal-footer justify-content-center"> <button type="button" class="btn btn-danger" data-bs-dismiss="modal" (click)="confirmDelete()">Törlés</button> <button type="button" class="btn btn-primary" data-bs-dismiss="modal" (click)="declineDelete()">Visszavonás</button> </div> </div> </div> </div>
Aber jedes Mal, wenn ich die ESC-Taste drücke oder außerhalb des Modals klicke, wird es geschlossen. Ich habe auch versucht, es über TS mit @ViewChild modal
(引用模态框的DOM div),以及一个dialog: MatDialog
属性,然后在按下Delete
按钮时调用的onDelete()
方法中,我只是简单地输入了this.modal.open(dialog, { disableClose: true });
zu verwalten, aber auch das hat nicht funktioniert. Ich würde es lieber einfach aus HTML lösen. Gibt es etwas, das mir fehlt? (Ich verwende Angular 14.1.1 und Bootstrap v5)
Backdrop必须设置为static,这样当点击它外部时模态框不会关闭,但是它被设置为
data-bs-backdrop="static"
而不是data-backdrop="static"