0

我目前正在探索将一个非常大的 AngularJS 1.6 应用程序升级到 Angular 6 的路径。我的应用程序作为一个混合应用程序引导,并且我已经开始转换单个模块和组件。不过,我需要能够分块进行迁移。如果我可以一次迁移一个模块,那就太好了,但为此我遇到了一些问题。

我有一个NavBar指令,它位于我的coreAngularJS 模块中。该组件正在降级downgradeComponent并在 AngularJScore模块上注册。landingAngularJS 模块依赖于该模块core,因此它可以使用NavBar. 这很好用,因为LandingComponent它也已转换为 Angular6 并且正在降级并在landingAngularJS 模块上注册。

NavBar但是,在任何其他 AngularJS 组件中使用该组件都会出现问题。我有第三个 AngularJS 模块,它调用了一个在其模板内部workflows有一个ViewWorkflows组件的组件。NavBar当我导航到该组件时,我收到以下错误:

angular.js:14791 Error: No component factory found for NavBarDirective. Did you add it to @NgModule.entryComponents?

我可以通过转换然后降级来解决这个问题ViewWorkflows,但是由于NavBar被注册为降级的 AngularJS 组件,任何声明对模块的依赖关系的 AngularJS 模块都不应该core访问它吗?

代码(不可运行)

编辑:我已将要点更新为更简单一些。该landing模块是 Angular,带有一个 Angular 组件,<landing>该组件被降级为在 AngularJSlanding模块上运行,并且<t-nav-bar>内部有一个。它依赖于core提供降级<t-nav-bar>指令的模块。该<test>组件是在 AngularJS 模块上注册的 AngularJSlanding组件,不能使用<t-nav-bar>. 甚至没有将workflows模块带入这种情况,它是行不通的。我究竟做错了什么?

4

1 回答 1

0

我已经设法解决了这个问题。我试图将其声明NavBar为 Angular @Directive。它实际上需要是一个@Component. 进行该切换后,它完全按预期工作。

我启动了这个repo 进行测试,并在那里发现了问题。这是一个新的 Angular 6 应用程序,我为了试验而“降级”了。

于 2018-05-17T14:35:47.527 回答