Comment gérer les "peut-être non gérée rejet: toile de fond, cliquez sur' une manière générale

J'ai angulaire de service pour le traitement des modaux:

angular.module('myApp').service('ModalService', function($uibModal) {
  function open(options) {
    return $uibModal.open(options);
  }
});

Maintenant j'ai mis à jour angulaire de 1,6 et eu cette erreur:

Éventuellement non gérée rejet: toile de fond, cliquez sur

chaque fois que j'ouvre un de modal et de cliquer quelque part d'autre (le contexte) et le modal ferme (comme prévu). Je tiens donc à gérer cette unhandled exception dans mon ModalService que je ne veux pas gérer ce cas à chaque fois que j'utilise le ModalService. C'est toujours ok pour fermer la modale par toile de fond, cliquez sur, ce n'est pas une exception.

J'ai essayé:

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;
  }
});

Mais cela conduit au problème que je ne peut pas traiter d'autres erreurs que backdrop click comme ils sont toujours lancées:

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
});

Et si j'essaie comme ceci:

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;
  });
});

il résout le 'non gérée rejet" de l'erreur, mais pour tous les cas et pas seulement pour "toile de fond cliqué sur".

A tout le monde une bonne solution pour ce cas?

InformationsquelleAutor Andi | 2017-02-23