是否可以将服务注入Angular 1.5组件的templateUrl属性?

3 javascript angularjs angularjs-directive angularjs-components

我的指令需要一个常量(MODULE_ROOT_URL)来生成模板路径.使用指令语法,我可以将常量注入目录工厂函数.如何将此指令转换为Angular 1.5组件?是否可以将服务注入Angular 1.5组件?

谢谢.

更新:我知道可以将服务注入组件控制器.但是,如何为组件的templateUrl属性注入服务?

Update2:请参阅plnkr.我创建了指令和组件版本.指令版本工作正常.但组件版本有错误[ngTransclude:orphan]

https://plnkr.co/edit/DMumuIpXJY6RDCX6XObz?p=preview

angular.module('AbcModule')
       .directive('abcDirective', ['MODULE_ROOT_URL', function (MODULE_ROOT_URL) {
           return {
               restrict: 'E',
               templateUrl:  MODULE_ROOT_URL + 'abc/abc.tpl.html'
           }

       }]);
Run Code Online (Sandbox Code Playgroud)

a b*_*ver 9

templateUrl并且template可以注入函数和依赖项.

angular.module('AbcModule')
.component('abcDirective',  {
     restrict: 'E',
     templateUrl:  function(MODULE_ROOT_URL) {
          return MODULE_ROOT_URL + 'abc/abc.tpl.html';
     }
});
Run Code Online (Sandbox Code Playgroud)

  • 您应该注意,此处显示的注射方法不是缩小安全的.templateUrl的值也可以是一个数组,其中可注入服务被指定为字符串,数组中的最后一项是函数`templateUrl:['MY_CONST',function(MY_CONST){...}]` (2认同)