我目前正在探索将一个非常大的 AngularJS 1.6 应用程序升级到 Angular 6 的路径。我的应用程序作为一个混合应用程序引导,并且我已经开始转换单个模块和组件。不过,我需要能够分块进行迁移。如果我可以一次迁移一个模块,那就太好了,但为此我遇到了一些问题。
我有一个NavBar
指令,它位于我的core
AngularJS 模块中。该组件正在降级downgradeComponent
并在 AngularJScore
模块上注册。landing
AngularJS 模块依赖于该模块core
,因此它可以使用NavBar
. 这很好用,因为LandingComponent
它也已转换为 Angular6 并且正在降级并在landing
AngularJS 模块上注册。
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
模块带入这种情况,它是行不通的。我究竟做错了什么?