Как работает import в angular и какая оптимизация от sharedModule?
Вообщем я не понимаю как работает импорт у меня два предположения:
1) Логика класса копируется туда, куда она импортируется,
т.е в 10 модулей я импортирую по одному компоненту(одинаковому) то этот компонент будет скопирован 10 раз
2) При первом импорте в общий бандл попадает компонет(и тому подобное) и дальше где есть импорт, просто открывается доступ
И как SharedModule может оптимизировать приложение?
Импорт модуля1 в модуль2 инициализирует инжектор модуля1 и он становится доступен для инжектора модуля2.
Создаются экземпляры провайдеров модуля1, и декларируемые сущности модуля 1 и новые экземляры провайдеров модуля1 становятся видимыми для модуля2.
Компоненты импортировать нельзя.
Расположение по бандлам определяет вебпак, если нет лейзи модулей то все будет в main. Если будут лейзи, то общие импорты скорее всего тоже попадут в main.
Ваш вариант 2 ближе к реальности.
SharedModule не нужен. Он служит типа аггрегатором для разделяемых модулей, чтобы меньше было строчек в импортах.