Я ищу помощь / указатели / рекомендации по отладке / пониманию проблемы с производным классом, который расширяет предоставляемый библиотекой сервис в проекте Angular 6.
Я пытаюсь переместить существующий проект Angular 5.x в новый формат рабочего пространства для angular.json
в проектах Angular 6.
Мой существующий проект состоит из приложения Angular и отдельного общего NgModule
, который предоставляет сервисы и другие функции. Общий модуль будет использоваться в нескольких приложениях в такой структуре:
project-root/
library/
main-app/
other-app/
В моем существующем коде NG5 общая библиотека npm link
'добавляется в основное приложение в виде исходных файлов TS (что хорошо работает для рабочего процесса моей команды, несмотря на то, что она явно не рекомендуется командой CLI).
В приложении NG6 library
- это библиотечный проект внутри angular.json
, построенный как таковой и добавленный в проект через определение пути в tsconfig.json
. Рабочая область стандартная для NG6:
workspace-root/
dist/...
node_modules/...
projects/
library/
src/lib/...
main-app/
src/app/...
other-app/
...
В большинстве случаев службы, предоставляемые в библиотеке, используются как есть, но могут быть расширены в основном приложении (или другом приложении) для обеспечения функциональности конкретного приложения. Это отлично работает в Angular 5, но в Angular 6 я получаю следующую ошибку в консоли при попытке загрузить страницу (при запущенном ng serve
):
Object prototype may only be an Object or null
Предупреждение происходит здесь:
export class FooService extends FooBaseService { // ...
--------------------------------^
FooBaseService становится неопределенным, когда процесс начальной загрузки создает экземпляр FooService.
На основании исследований эта ошибка обычно связана с проблемами циклической зависимости, но я не думаю, что это происходит. При сборке библиотеки я не получаю никаких предупреждений о каких-либо проблемах или каких-либо проблемах при создании основного приложения. Кроме того, при запуске madge -c
(ссылка) не обнаруживаются ошибки в dist/library
или dist/main-app
.
Я немного озадачен тем, как продолжить отладку этой проблемы. Кто-нибудь с более глубоким пониманием того, как Angular 6 обрабатывает предоставляемые модулем сервисы, кто мог бы указать мне правильное направление?