简体   繁体   English

TypeError:$ compile不是函数

[英]TypeError: $compile is not a function

I am writing a AngularJS directive in typescript. 我在打字稿中写了一个AngularJS指令。 Here is my code, in browser error thrown like this TypeError: $compile is not a function at compileComponent.js:14 这是我的代码,在浏览器中像这样抛出TypeError错误:$ compile不是compileComponent.js的函数:14

But TS compiler not showing any error. 但是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]);
}

Try to implemented it like that : 尝试像这样实现它:

 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());

我弄错了,我忘了注入$ compile

dragdropModule.directive("compile", ["$compile", CompileComponent]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM