2017-06-21 104 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]); 
相關問題