En utilisant $provide.decorator
Utiliser $providepour décorer la directive évite d'avoir à jouer directement avec $templateCache.
Au lieu de cela, créez votre modèle externe html comme vous le feriez normalement, avec le nom que vous voulez, puis remplacez la directive templateUrlpour y pointer.
angular.module('plunker', ['ui.bootstrap'])
  .config(['$provide', Decorate]);
  function Decorate($provide) {
    $provide.decorator('alertDirective', function($delegate) {
      var directive = $delegate[0];
      directive.templateUrl = "alertOverride.tpl.html";
      return $delegate;
    });
  }
Fourche du plunkr de pkozlowski.opensource: http://plnkr.co/edit/RE9AvUwEmKmAzem9mfpI?p=preview
(Notez que vous devez ajouter le suffixe "Directive" au nom de la directive que vous souhaitez décorer. Ci-dessus, nous décorons la alertdirective de UI Bootstrap , nous utilisons donc le nom alertDirective.)
Comme vous pouvez souvent vouloir faire plus que simplement remplacer le templateUrl, cela fournit un bon point de départ pour étendre davantage la directive, par exemple en surchargeant / encapsulant le lien ou la fonction de compilation ( par exemple ).
     
              
$modalservice pour obtenir plus de configurabilité sans (espérons-le) créer trop de casse-tête de maintenance.$provide.decorator('$modal'... Dans mon cas, je ne voulais pas rendre l'modalWindowélément. Déjà. Je ne l'utilisais tout simplement pas, et c'était le mieux que je pouvais trouver. J'adorerais entendre une meilleure façon si quelqu'un l'a.