ModuleRegistry
Перший етап обробки метаданих, які ви передаєте у декораторах модулів (таких як @rootModule чи @featureModule), відбувається у сервісі ModuleRegistry.
Він рекурсивно сканує усі модулі, починаючи з кореневого модуля, пропускає опції декораторів через ModuleNormalizer і зберігає зібрані нормалізовані метадані у вигляді об'єктів NormalizedModuleMeta.
На цьому етапі DI-контейнер застосунку ще не існує. Для framework-level кастомізації BaseAppOptions.moduleNormalizerFactory може створити кастомний ModuleNormalizer; ця опція експериментальна.
Сканування та нормалізація метаданих
Процес ініціалізації починається з виклику moduleRegistry.scanAppModule(rootModule):
- Нормалізація кореневого модуля: Опції декоратора кореневого модуля передаються в
ModuleNormalizer, який перевіряє їхню коректність та формує нормалізовані метадані. - Рекурсивне сканування залежностей:
ModuleRegistryобходить усі модулі, вказані в масивахimportsтаexports, формуючи повну карту модулів застосунку. - Обробка aspect-декораторів: Якщо модуль використовує розширені aspect-декоратори (наприклад,
@restModuleчи кастомні@*Aspect), запускаються відповідні module aspects для нормалізації розширених метаданих. - Валідація та перевірка цілісності: Перевіряється коректність імпортів/експортів та відсутність конфліктів у конфігураціях модулів.