Hybrid AngularJS/Angular 6 个应用程序模块依赖性问题

Hybrid AngularJS/Angular 6 app module dependency issues

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

我有一个 NavBar 指令,它位于我的 core AngularJS 模块中。该组件正在使用 downgradeComponent 降级并在 AngularJS core 模块上注册。 landing AngularJS模块依赖于core模块,因此可以使用NavBar。这工作正常,因为 LandingComponent 也已转换为 Angular6,并且正在降级并注册到 landing AngularJS 模块。

不过,在任何其他 AngularJS 组件中使用 NavBar 组件存在问题。我有一个名为 workflows 的第三个 AngularJS 模块,它有一个 ViewWorkflows 组件,在其模板中有一个 NavBar 。当我导航到该组件时,出现以下错误:

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

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

Code (Not runnable)

编辑:我更新了要点,使其更简单一些。 landing 模块是 Angular,具有 Angular 组件,<landing> 在 AngularJS landing 上降级为 运行模块,里面有一个 <t-nav-bar>。它依赖于提供降级的 <t-nav-bar> 指令的 core 模块。 <test>组件是注册在AngularJSlanding模块上的AngularJS组件,不能使用<t-nav-bar>。甚至不将 workflows 模块带入情况,它也不起作用。我做错了什么?

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

我启动了 this 存储库进行测试,并在那里发现了问题。这是我 "downgraded" 用于试验的新 Angular 6 应用程序。