javascript - 组件从 v5 或 v4 降级到 angularJS 时出现 Angular 注入(inject)器错误

标签 javascript angularjs angular5

我创建了简单的 angular5 组件 HelloComponent:

var HelloComponent = function () {
};

HelloComponent.annotations = [
  new ng.core.Component({
    selector: 'hello-world',
    template: 'Hello World!'
  })
];

接下来我尝试在我的 angularJS 指令中使用这个组件,例如:

angular.module("app", [])
.directive("helloWorld", ng.upgrade.static.downgradeComponent(HelloComponent))

但是在运行这个脚本时我得到了这个错误:

Error: [$injector:unpr] Unknown provider: $$angularLazyModuleRefProvider <- $$angularLazyModuleRef http://errors.angularjs.org/1.6.5/$injector/unpr?p0=%24%24angularLazyModuleRefProvider%20%3C-%20%24%24angularLazyModuleRef

请参阅 angular 5 和 angularJS 的简单示例:http://plnkr.co/edit/dQJ2tgV2MuInT41ucjq1

如何解决这个问题?

附加信息

将组件从 v4 降级到 v1 的示例也存在:https://hackernoon.com/angular-v4-hybrid-upgrade-application-73d5afba1e01

但是当我尝试用这篇文章重新制作我的应用程序时,我遇到了另一个错误:

Unknown provider: $$angularInjectorProvider

参见 v4 示例:http://plnkr.co/edit/9Oxy0QeSg1FYve0cjGYw

v5 的相同示例返回旧错误:

Unknown provider: $$angularLazyModuleRefProvider

参见 v5 示例:http://plnkr.co/edit/eZScm8U41mGuuHJMjApV

最佳答案

你需要在你的应用模块中设置对$$UpgradeModule的依赖

改变

angular.module("app", [])
.directive("helloWorld", ng.upgrade.static.downgradeComponent(HelloComponent))

var app=angular.module("app", ['$$UpgradeModule']).directive("helloWorld", ng.upgrade.static.downgradeComponent({component:HelloComponent}));

Working plunker

关于javascript - 组件从 v5 或 v4 降级到 angularJS 时出现 Angular 注入(inject)器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552849/

相关文章:

javascript - 夏洛克与野兽 - Hackerrank

angularjs - 共享服务,组件通信Angular 2

html - 在 mat-card-title 中左右对齐

javascript - 选中时创建一个复选框,它应该在模态中显示某些输入字段并隐藏其他输入字段

javascript - PDF:用于填写表单字段的 Javascript

javascript - 克 :submitButton conditional enable/disable

javascript - 在 AngularJS 中提交表单?

javascript - 如何动态禁用 Angular 指令?

javascript - 如何访问组件的自定义属性? ( Angular 5)

javascript - 在 mat-grid 中使用 mat-button-toggle-group