А как выглядит при этом иерархия каталогов?
Вот у меня есть компонент-страница, т.е. некий компонент, для которого есть свой путь и который рендерит кусок какой то логики. У этого компонента есть отдельный модуль (например, page.module)
Внутри компонента есть (например) 10 компонентов, которые нигде больше не используются. Мне создавать рядом с page.module каталог с ещё 10 модулями по одному компоненту в каждом?
Всё просто на самом деле. Давайте сначала с термионологией разберемся. Я использую следующие понятия
- view модули
- widget модули
Под view модулями я понимаю модуль, реалзиующий кусок философской логики проекта, например AdminModule, в котором будет будут свои view модули, например, AdminListModule, AdminCardModule
Под widget модулями я понимаю модули, которые реализуют независимый от философии кусок экрана, например, PersonCardModule, ItemsListModule
Соответсвенно, component per module подход используется для widget модулей. Таким образом, например, в PersonCardModule будет примерно следющее
NgModule({
imports: [все модули, которые обеспечивают контект файла <app-person-card>],
declrations: [PersonCardComponent, +все компоненты, пайпы и проч, которые обеспечивают контент файла <app-person-card>],
и важный момент
exports: [PersonCardComponent]
})
Этот PersonCardModule соответствует только PersonCardComponent и несет всё описание, необходимое для PersonCardComponent
Использовать его нужно, например, в view модуле AdminCardModule. Импорт PersonCardModule даст возможность в AdminCardModule использовать тег <app-person-card>, в которые, вы можете прокинут админа, то бишь
<app-person-card [person]="admin">
Если есть где-то потребность использовать PersonCardComponent, вы просто импортите в том месте PersonCardModule и используете как<app-person-card [person]="admin или user или person или woman и проч">
Примерно такой подход, очень удобный. Складываю все widget модули в специльную папочку widgets, в зависимости оттого, где используется этот компонент. Если везде используется, то widgets лежит прям на самом верху, то бишь в src/app/widgets/person-card, если только в разделе Admin, то там тоже будет widgets, где эта папка ляжет, то бишь src/app/views/admin/widgets/person-card