我目前正在为Angular 6探索一个相当大的AngularJS 1.6应用程序的升级路径。我将我的app bootstrapping作为混合应用程序,我已经开始转换单个模块和组件。不过,我需要能够以块的形式进行迁移。如果我可以一次迁移一个模块会很好,但我为此遇到了一些问题。
我有一个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组件,因此不应该声明对{{1}声明依赖关系的任何AngularJS模块1}}模块可以访问它吗?
编辑:我已经更新了要点,使其更加简单。 core
模块是Angular,其Angular组件landing
降级为在AngularJS <landing>
模块上运行,其中包含landing
。它依赖于<t-nav-bar>
模块,该模块提供降级的core
指令。 <t-nav-bar>
组件是在AngularJS <test>
模块上注册的AngularJS组件,不能使用landing
。甚至没有将<t-nav-bar>
模块带入这种情况,它也不起作用。我做错了什么?
答案 0 :(得分:0)
我已经成功解决了这个问题。我试图将NavBar
声明为Angular @Directive
。它实际上需要是@Component
。完成切换后,它完全按预期工作。
我用this个回复来测试,并在那里发现了问题。这是一个新的Angular 6应用程序,我为了试验而“降级”。