Чего я хочу достичь
Инкапсулированное приложение (редактор форм), которое я могу использовать в другом угловом приложении, а также в любом веб-приложении.
Идея
Основные модули / компоненты могут быть реализованы как библиотека angular (основной компонент как shadow dom), поэтому я могу добавить оболочку angular elements для создания веб-компонента, но также могу импортировать саму библиотеку как пакет npm внутри моего существующего приложения angular . Таким образом, мое приложение angular загружает не весь пакет javascript, а только те модули, которые не предоставляются, кроме другого приложения, для повышения производительности и интеграции.
Проблема
Для каждого запроса из библиотеки я хочу, чтобы http-перехватчик входил в систему / добавлял токен jwt в заголовок запроса. Когда я создаю приложение с оболочкой angular elements (ничего не делаю, кроме импорта библиотеки и создания веб-компонента), все работает нормально. Когда я добавляю его в приложение angular, перехватчик не работает должным образом, потому что другое приложение также имеет перехватчик. Я хочу инкапсулировать перехватчик библиотек только в библиотеку. Итак, я подумал, что мне просто нужно снова импортировать HttpClientModule внутри моей библиотеки и получить свой собственный экземпляр, поэтому определенный поставщик HTTP_INTERCEPTORS внутри того же файла знает, когда срабатывать. К сожалению, эта идея не работает, и оба мешают.
AppModule
- imports:
- HttpClientModule(1)
- CustomLibraryModule
- providers:
- HTTP_INTERCEPTORS(1)
CustomLibraryModule
- imports:
- HttpClientModule(2)
- providers:
- HTTP_INTERCEPTORS(2)
В лучшем случае я хочу импортировать CustomLibraryModule в ленивый дочерний модуль моего приложения.
Вопрос
Выбираю ли я правильные инструменты в этой ситуации? Вы знаете, что я делаю неправильно, чтобы получить инкапсулированный перехватчик http?