Mam problem. Muszę pokazać toastr informując, że zmiany nie są zapisywane, gdy ktoś chce ukryć modal. Muszę wyzwolić toastr przed modalnym hide, a gdy użytkownik spróbuje ponownie odrzucić modal, pozwól na to. Próbowałem coś takiego:Modalne wydarzenie przed ukryciem
declare let jQuery: any;
declare let $: any;
declare let toastr: any;
@Component({
selector: 'app-trigger',
templateUrl: './trigger.component.html',
styleUrls: ['./trigger.component.scss']
})
export class TriggerComponent implements OnInit {
name: string
private canHideModal = true;
constructor() {
}
ngOnInit(){
const self = this;
$('#triggerModal').on('hide.bs.modal',() => {
if (self.canHideModal) {
//hide modal here <---------
} else {
toastr['warning']('You have unsaved changes');
self.canHideModal = true;
return false
}
});
}
fireModal(changes : {action:string, name:string}){
changes.action = 'show';
changes.name = 'test';
this.name = changes.name
$('#triggerModal').modal(changes.action);
}
}
i działa prawidłowo po raz pierwszy, po tym hide
wydarzenie wydaje się być funkcja $('#triggerModal').on('hide.bs.modal',() => {
overwriten i nie wywołuje już.
HTML:
<div class="modal fade" id="triggerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-lg px-4" role="document">
<!--Content-->
<div class="modal-content">
<!--Header-->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<!--Body-->
<div class="modal-body mb-0">
<!--Grid row-->
<div class="row d-flex justify-content-center mb-4">
<!--Grid column-->
<div class="col-md-6">
<!--Name-->
<div class="md-form">
<input type="text" id="triggerStartName" (input)="canHideModal = false" class="form-control" #triggerName [value]="name">
<label for="triggerStartName" [ngClass]="{ 'active': name }">Trigger name</label>
</div>
</div>
<!--Grid column-->
</div>
<!--Grid row-->
</div>
<!--Footer-->
<div class="modal-footer justify-content-center">
<button type="button" class="btn btn-primary waves-effect waves-light" data-dismiss="modal">Close</button>
</div>
</div>
<!--/.Content-->
</div>
</div>
pokazać nam część html dotyczy kodu i sposobu wyświetlania trybu modalnego, kątowego lub jQuery. –
@ DanielSeguraPérez zrobione, mam nadzieję, że jest jasne –