我可以轻松注入$ scope和$ location和$ routeProvider之类的东西,为什么$ compileProvider与众不同?

基于this answer,我知道我必须指示angular不能为某些链接添加前缀(在我的情况下为sms),但是我无法在项目中应用答案。它说我应该添加这个:

angular.module('myModule', [], function ($compileProvider) {
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});


但是Chrome控制台说:


  “ angular.js:68未捕获的错误:[$ injector:unpr]未知提供者:
  $ compileProviderProvider <-$ compileProvider”


“ provider-provider”一词使我认为服务的真实名称只是$ compile(并且angular在“ provider”后缀上加上了:

angular.module('myModule', [], function ($compile) {
    $compile.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});


但是随后,可以预见的是,我得到了:


  angular.js:13550 TypeError:$ compile.aHrefSanitizationWhitelist不是一个函数

最佳答案

那是因为您必须将其添加为配置:



angular.module('myModule').config(['$compileProvider',
  function($compileProvider) {
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
  }
]);

09-25 19:21