Is there a way to prevent the an AngularJS modal from closing/dismissing in the controller logic of the modal?
What I want is to show a warning when the users closes the modal and the form inside the modal contains unsaved data.
I've tried searching for a before close event or something else I could use in the official documentation, but no luck so far.
If you set
backdrop: 'static'
in yourmodalInstance
, solve the problem?Like this:
Then, you need only control the ngClick button responsible to close the modal.
Hope this helps.
UPDATE 1 [only more info]
Use
keyboard: false
for disableEscape
:UPDATE 2
I researched and found an option. In your modal controller, use:
Example:
But you need a way to not continue the events for to close the modal. Or allow user save the data before close modal. That's what got so far.
UPDATE 3
Check this.
You can watch the 'modal.closing' event, broadcasted to the modal's scope, like this:
The first parameter is the event, which you can preventDefault() to prevent it from closing.
The second parameter is the reason (whatever is passed to the $close() method)
The third parameter is a boolean indicating whether the modal was closed or dismissed.
Here a working plunker
I don't know when this was added, but currently it is mentioned in the official documentation.
This will stop the backdrop from triggering a $modal.close event:
The keyboard's
ESC
key can still close the modal, so if you want to diable that usekeyboard: false