错误:[$ injector:unpr]未知提供程序-将AngularJS1迁移到Angular6

时间:2019-10-09 01:48:46

标签: angularjs angular ng-upgrade angular-upgrade

我正在尝试将用 AngularJS1 编写的组件升级到 Angular6 。在我的示例中,通过扩展放置在“ directive-wrappers”文件夹下的“ UpgradeComponent ”,我采用了为所有现有AngularJS1组件提供包装的方法。

在加载应用程序时,我收到控制台错误

Error: [$injector:unpr] Unknown provider: testDirective2DirectiveProvider <- testDirective2Directive
https://errors.angularjs.org/1.7.8/$injector/unpr?p0=testDirective2DirectiveProvider%20%3C-%20testDirective2Directive
    at eval (angular.js:138)
    at eval (angular.js:4924)
    at Object.getService [as get] (angular.js:5084)
    at eval (angular.js:4929)
    at Object.getService [as get] (angular.js:5084)
    at Function.UpgradeHelper.getDirective (upgrade_helper.ts:56)
    at new UpgradeHelper (upgrade_helper.ts:52)
    at TestDirective2Wrapper.UpgradeComponent (upgrade_component.ts:106)
    at new TestDirective2Wrapper (TestDirective2Wrapper.ts:27)
    at createClass (provider.ts:265) "<app-root _nghost-c0="">"

enter image description here

要在线模拟相同的应用程序,我在stackblitz中创建了相同的angularjs指令及其包装器

1 个答案:

答案 0 :(得分:0)

docsSampleDirective.js 文件存在问题。

您已经在 testApp 文件中初始化了 app.module.js 模块时,第二次在此处初始化了AngularJS模块。只需从那里摆脱依赖项数组即可:

angular
  .module("testApp")
  .controller("Controller", [
    "$scope",
    function($scope) {
      $scope.customer = {
        name: "Naomi",
        address: "1600 Amphitheatre"
      };
    }
  ])
  .directive("docsSimpleDirective", function() {
    return {
      template: "Name: {{customer.name}} Address: {{customer.address}}"
    };
  });

  

这是您推荐的Working Sample StackBlitz