簡體   English   中英

混合AngularJS / Angular 6應用模塊依賴問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM