Контекст
Я создаю библиотеку с 2 способами инициализации:
- Automati c - я загружаю некоторые материалы для вас асинхронно, а затем инициализирую.
- Вручную - вы уже загрузили материал раньше, затем я немедленно инициализирую библиотеку (syn c).
В прошлом я успешно реализовывал библиотеки с возможностью разделения на деревья. Обычно мы делим код на два модуля и позволяем разработчику приложения выбирать, какой из них импортировать, что позволяет трясти дерево другой части. Аналогично этому:
import { LibraryAsyncModule } from 'my-library'; // ? Or LibrarySyncModule
@NgModule({
imports: [LibraryAsyncModule] // ? Or LibrarySyncModule
})
export class AppModule { }
Чего я хочу достичь sh ✔
Чтобы уменьшить кривую обучения работе с моей библиотекой, я пытаюсь создать единственный импортируемый модуль, который включает в себя соответствующий модуль и позволяет дерево встряхивая другой. Следующая диаграмма показывает желаемую структуру.
Чего я хочу избежать ?
Я мог бы создать фабричных провайдеров, которые будут обнаруживать config передается в forRoot()
и загружается соответствующий модуль в runtime . Однако импорт модулей во время выполнения превращает инициализацию в asyn c, а также предотвращает связывание angular используемого модуля с приложением.
Мне нужно решение время сборки . Мои прототипы показывают, что простое включение обоих модулей syn c и asyn c в основной модуль приводит к объединению обоих. Как будет выглядеть этот единственный модуль? Есть идеи / предложения? ?