J'ai trouvé une solution de contournement géniale !!!! Je suis tellement excitée de montrer cela parce qu'elle m'avait dérouté comment mettre en œuvre ceci pour les agers. Alors voilà; Tout d'abord, changez tous vos fichiers CSS en scss;
Pour les projets existants
Pour les projets futurs
Maintenant, vous aurez besoin d'avoir un fichier theme.scss dans la racine de votre application comme ceci:
Maintenant, dans votre style.SCSS le fichier que vous voulez ajouter ce qui suit (comme vous pouvez le voir, je referrence background-color, mais vous pouvez le modifier à tout élément au thème de votre site mais vous voulez):
EDIT: Vous ne avez pas besoin de mettre cette coutume @mixin élément dans votre styles.scss
vous pouvez le mettre dans l'un de vos *name*.component.scss
puis simplement importer et l'inclure de la même manière que vous faites avec l'exemple donné!
@import '[email protected]/material/theming';
// Define a custom mixin that takes in the current theme
@mixin theme-color-grabber($theme) {
// Parse the theme and create variables for each color in the pallete
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
$warn: map-get($theme, warn);
// Create theme specfic styles
.primaryColorBG {
background-color: mat-color($primary);
}
.accentColorBG {
background-color: mat-color($accent);
}
.warnColorBG {
background-color: mat-color($warn);
}
}
Allez maintenant à votre fichier theme.scss que vous utilisez pour votre matériel thème 2 articles, si vous avez besoin d'aide thématisation Check this out: Material 2 Github - Theming guide
Ouvrez maintenant votre theme.scss et importez votre style. scss, puisque mon theme.scss est dans la racine du dossier /src/app/theme.scss
Je dois d'abord en sortir pour référencer mon fichier de style global /src/styles.scss
comme ça;
@import '../styles';
Ensuite, nous devons effectivement inclure notre nouvelle coutume @mixin
nous avons créé dans TOUS nos thèmes (si vous avez plusieurs comme je le fais, il change de couleur en fonction du thème choisi en cours).
Inclure au-dessus de la thème de matériau angulaire réels comprennent, comme ceci:
@include theme-color-grabber($theme);
@include angular-material-theme($theme);
Si vous avez des thèmes comme moi l'ajouter dans la même position comme ceci:
.light {
$light-primary: mat-palette($mat-blue, 200,300, 900);
$light-accent: mat-palette($mat-light-blue, 600, 100, 800);
$light-warn: mat-palette($mat-red, 600);
$light-theme: mat-dark-theme($light-primary, $light-accent, $light-warn);
@include theme-color-grabber($light-theme);
@include angular-material-theme($light-theme);
}
Vous pouvez voir que j'ai ajouté mon theme-color-grabber
au dessus de l'include, ce n'est pas vraiment important si c'est au dessus ou en dessous du thème actuel car c'est en obtenant les couleurs des thèmes qui est le point principal .
Mon tout themes.scss ressemble à ceci:
@import '[email protected]/material/theming';
//We import our custom scss component here
@import '../styles';
@include mat-core();
$theme-primary: mat-palette($mat-red);
$theme-accent: mat-palette($mat-deep-orange, A200, A100, A400);
$theme-warn: mat-palette($mat-red);
$theme: mat-dark-theme($theme-primary, $theme-accent, $theme-warn);
//
@include theme-color-grabber($theme);
@include angular-material-theme($theme);
.light {
$light-primary: mat-palette($mat-blue, 200,300, 900);
$light-accent: mat-palette($mat-light-blue, 600, 100, 800);
$light-warn: mat-palette($mat-red, 600);
$light-theme: mat-dark-theme($light-primary, $light-accent, $light-warn);
@include theme-color-grabber($light-theme);
@include angular-material-theme($light-theme);
}
Et enfin, nous pouvons maintenant faire appel à nos thèmes de couleur pour un fond PARTOUT !, par exemple, je donne un mat-grid-tile
la couleur « primaire » (il doesn « t prendre la couleur = » » argument, comme d'autres éléments tels que le tapis barre d'outils) en mettant simplement sa classe au nom de la classe appropriée comme ceci:
<mat-grid-list cols="4" rows="4" rowHeight="100px">
<mat-grid-tile
colspan="4"
rowspan="5"
class="primaryColorBG">
<div fxLayout="column" fxLayoutAlign="center center">
<h1 class="title-font">Callum</h1>
<h1 class="title-font">Tech</h1>
</div>
<p>
Ambitious and ready to take on the world of Information Technology,<br>
my love for programming and all things I.T. has not wavered since I first got access<br>
to my fathers computer at age 9.
</p>
</mat-grid-tile>
</mat-grid-list>
Enfin, notre résultat ressemblera à ceci !:
thème rouge actif
thème bleu actif
Impressionnant, il est possible! –
: 3 Ouais, je suis si heureux, ça m'a vraiment fait monter le mur, mais maintenant je peux faire tout mon travail; D – Cacoon
Bon travail, Cacoon;) –