Я рассказываю вам, как бы я это сделал, но это субъективно, поэтому рассмотрите возможность использования этого, если вам подходит, в противном случае не стесняйтесь использовать что-то другое.
Что я хотел бы сделать, это создать интерфейс (или, если компоненты почти идентичны, суперкласс), например:
export interface ComponentX {
title: string;
data: any[];
headers: string[];
}
Теперь ваши компоненты должны реализовать это, и все они могут использовать один и тот же шаблон / стиль:
@Component({
selector: 'comp-A',
templateUrl: '../component-X.component.html',
styleUrls: ['../component-X.component.scss']
})
export class ComponentA implements ComponentX {
title = 'Component A';
data = [];
headers = ['ID', 'full name', 'phone number'];
}
Таким образом, все ваши компоненты будут вынуждены иметь свойства вашего взаимодействия, и поскольку свойства останутся прежними, вам потребуется только один шаблон / файл CSS.
Структура папок будет выглядеть так (опять же, если бы это была моя проблема):
ComponentX
|
|- componentX.component.html
|- componentX.component.ts
|- componentX.component.scss
|
|- ComponentA
| |- componentA.component.ts
|
|- ComponentB
| |- componentB.component.ts
|
|- ComponentC
|- componentC.component.ts