Один из подходов, который вы могли бы использовать, - использовать для этого базовые классы CSS.В файле темы определите различные темы:
@import '~@angular/material/theming';
@include mat-core();
// Define a default theme
$light-default-primary: mat-palette($mat-blue);
$light-default-accent: mat-palette($mat-blue-grey, A200, A100, A400);
$light-default-warn: mat-palette($mat-red);
$light-default-theme: mat-light-theme($light-default-primary, $light-default-accent, $light-default-warn);
@include angular-material-theme($light-default-theme);
.light-blue-theme {
$light-blue-primary: mat-palette($mat-blue);
$light-blue-accent: mat-palette($mat-blue-grey, A200, A100, A400);
$light-blue-warn: mat-palette($mat-red);
$light-blue-theme: mat-light-theme($light-blue-primary, $light-blue-accent, $light-blue-warn);
@include angular-material-theme($light-blue-theme);
}
.dark-theme {
$dark-primary: mat-palette($mat-cyan);
$dark-accent: mat-palette($mat-blue-grey, A200, A100, A400);
$dark-warn: mat-palette($mat-deep-orange);
$dark-theme: mat-dark-theme($dark-primary, $dark-accent, $dark-warn);
@include angular-material-theme($dark-theme);
}
, а в файле evnironments.ts
укажите клиента: (вам понадобятся отдельные среды для каждого клиента, я думаю)
export const client = {
clientName: 'xxx'
}
В вашем компоненте вы можете установить текущего клиента:
export class AppComponent {
public clientName: string = this.env.client.clientName; // imported from environments.ts
...
Затем в своем шаблоне вы можете добавить соответствующий класс в ваш основной контейнер:
<div [class.light-blue-theme]="clientName === 'xxx'" [class.dark-theme]="clientName === 'yyy'">
...
</div>