I have an angular service for handling modals:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
return $uibModal.open(options);
}
});
Now I upgraded to angular 1.6 and got this error:
Possibly unhandled rejection: backdrop click
whenever I open a modal and click somewhere else (the backdrop) and the modal closes (as intended). So I want to handle this unhandled exception
in my ModalService
as I do not want to handle this case everytime I use the ModalService
. It is always ok to close the modal via backdrop click, this is no exception.
I tried:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
var modalInstance = $uibModal.open(options);
modalInstance.result.catch(function error(error) {
if(error === "backdrop click") {
// do nothing
} else {
throw error;
}
})
return modalInstance;
}
});
But this leads to the problem that I cannot handle other errors than backdrop click
as they are always thrown:
ModalService.open({...}).result.catch(function(error) {
// this will catch the error too, but the throw in the ModalService
// will occure in parallel and will not be catched by this function
});
And if I try it like this:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
var modalInstance = $uibModal.open(options);
modalInstance.result.then(function(whatever) {
return whatever;
}, function rejection(error) {
return error;
});
return modalInstance;
});
});
it resolves the 'unhandled rejection' error, but for every case not just for 'backdrop clicked'.
Has anybody a good solution for this case?