Проблемы с зависимостями модуля приложения Hybrid AngularJS / Angular 6 - PullRequest
0 голосов
/ 14 мая 2018

В настоящее время я изучаю путь обновления довольно крупного приложения AngularJS 1.6 до Angular 6. У меня есть загрузочная версия моего приложения в виде гибридного приложения, и я начал преобразовывать отдельные модули и компоненты.Я должен быть в состоянии сделать миграцию кусками, хотя.Было бы хорошо, если бы я мог мигрировать модуль за раз, но у меня возникают некоторые проблемы с этой целью.

У меня есть директива NavBar, которая находится в моем модуле core AngularJS.Этот компонент понижен до downgradeComponent и зарегистрирован в модуле AngularJS core.Модуль 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 является угловым, с угловым компонентом <landing>, который понижен для работы на модуле AngularJS landing и имеет внутри <t-nav-bar>.Он зависит от модуля core, который предоставляет пониженную директиву <t-nav-bar>.Компонент <test> является компонентом AngularJS, зарегистрированным в модуле AngularJS landing, который не может использовать <t-nav-bar>.Даже не вводя модуль workflows в ситуацию, он не работает.Что я делаю не так?

1 Ответ

0 голосов
/ 17 мая 2018

Мне удалось разобраться с этим. Я пытался объявить NavBar как Angular @Directive. Это на самом деле должно быть @Component. После этого переключения он работает точно так же, как и ожидалось.

Я развернул это репозиторий для тестирования и обнаружил проблему там. Это новое приложение Angular 6, которое я "понизил" для экспериментов.

...