2017-06-21 111 views
0

我在打字稿中写了一个AngularJS指令。这里是我的代码,在浏览器的错误时,抛出这样 类型错误:$编译不在compileComponent.js功能:14

但TS编译器不显示任何错误。

module dashboard { 
    function CompileComponent($compile): ng.IDirective { 
    console.log('Compiler s--'); 

    return { 
     replace: false, 
     restrict: 'EA', 
     link: (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModel: any) => { 
     scope.$watch(
      function (scope) { 
      return scope.$eval(attrs.compile); 
      }, 
      function (value) { 
      element.html(value); 
      $compile(element.contents())(scope); 
      } 
     ); 
     } 
    } 
    } 
    var dragdropModule = angular.module('dashboard'); 
    dragdropModule.directive("compileComponent", [CompileComponent]); 
} 

回答

1

尝试这样实现的:

class CompileComponent implements ng.IDirective { 
     restrict = 'A'; 
     require = 'ngModel'; 
     templateUrl = 'myDirective.html'; 
     replace = true; 
enter code here 
    link = (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl: any) => { 
// do something 
} 

static factory(): ng.IDirectiveFactory { 
    const directive = ($compile: ng.ICompileService) => new CompileComponent($compile); 
    directive.$inject = ['$compile']; 
    return directive; 
} 
     constructor(private $compile: ng.ICompileService) { 
     } 
    } 
    app.directive('compileComponent', CompileComponent.factory()); 
0

我得到了什么我做错了,我忘了注入$编译

dragdropModule.directive("compile", ["$compile", CompileComponent]); 
相关问题