[英]Hybrid AngularJS/Angular 6 app module dependency issues
我目前正在探索將相當大的AngularJS 1.6應用程序升級到Angular 6的途徑。我將應用程序作為混合應用程序進行引導,並且已經開始轉換單個模塊和組件。 不過,我需要能夠進行大塊遷移。 如果可以一次遷移一個模塊,那會很好,但是為此我遇到了一些問題。
我有一個NavBar
指令,它位於我的core
AngularJS模塊中。 該組件正在使用downgradeComponent
並在AngularJS core
模塊上注冊。 landing
AngularJS模塊依賴於core
模塊,因此它可以使用NavBar
。 這很好用,因為LandingComponent
也已經轉換為Angular6,並且正在降級並在landing
AngularJS模塊上注冊。
但是,在任何其他AngularJS組件中使用NavBar
組件仍然存在問題。 我有第三個AngularJS模塊,稱為workflows
帶有一個ViewWorkflows
組件,該組件的模板內有一個NavBar
。 導航到該組件時,出現以下錯誤:
angular.js:14791 Error: No component factory found for NavBarDirective. Did you add it to @NgModule.entryComponents?
我可以通過轉換然后降級ViewWorkflows
來解決此ViewWorkflows
,但是由於NavBar
已注冊為降級的AngularJS組件,因此任何聲明依賴於core
模塊的AngularJS模塊都不能訪問它嗎?
編輯:我已經更新了要點,使其更加簡單。 landing
模塊是Angular,帶有Angular組件<landing>
,該組件已降級以在AngularJS landing
模塊上運行,並且內部具有<t-nav-bar>
。 它依賴於提供降級的<t-nav-bar>
指令的core
模塊。 <test>
組件是在AngularJS landing
模塊上注冊的AngularJS組件,不能使用<t-nav-bar>
。 甚至沒有將workflows
模塊引入情況,它就無法工作。 我究竟做錯了什么?
我設法解決了這個問題。 我試圖將NavBar
聲明為Angular @Directive
。 它實際上需要是一個@Component
。 進行該切換后,它可以完全按預期工作。
我轉過這個倉庫進行測試,並在那里發現了問題。 這是我為實驗而“降級”的新Angular 6應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.