100 votes

Angular material Impossible de trouver le thème de base d'Angular Material

Dans mon projet Angular2, j'installe le dernier plugin material à partir de https://material.angular.io/guide/getting-started. Ensuite, j'ajoute @import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; à mon fichier css pour mon composant. Mais dans ma console Angular affiche cette erreur :

material.es5.js:148 Impossible de trouver le thème principal Angular Material. La plupart des composants Material pourraient ne pas fonctionner comme prévu. Pour plus d'informations, consultez le guide de thèmes : https://material.angular.io/guide/theming

Les composants Material ne fonctionnent pas. Quel est le problème ?

0 votes

Si je me souviens bien, ce fichier est un fichier SASS (.scss), peut-être que vous pouvez essayer avec ça?

0 votes

Je n'ai aucun fichier sass

0 votes

Non, vous n'avez pas de fichiers sass, mais le module de matériel angular en a. C'est ainsi que vous utilisez votre propre thème (encore une fois, si je me souviens bien), donc essayez de voir dans le module node s'il s'agit d'un fichier SASS ou css.

201voto

codelovesme Points 995

Veuillez insérer le code ci-dessous dans votre fichier styles.css situé dans votre dossier src.

@import "../node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css";

Vous pouvez choisir n'importe quel CSS dans le dossier prebuilt-themes.

2 votes

Tout comme @jelbourn l'a mentionné dans les problèmes 4739: Chargez les thèmes pré-construits dans Global (styles.css), plutôt que dans styleUrls du composant.

18 votes

Utilisez ~ pour un chemin plus simple vers les modules de nodes. Exemple : @import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

0 votes

Comme l'a dit @BraveNinja, le tilde "~" vous permet d'éviter les problèmes avec les chemins. Consultez stackoverflow.com/a/39535907/877464 pour une meilleure explication.

27voto

Mohammad Zeeshan Points 314

Mettez ce code dans votre fichier angular-cli.json

"styles": [
    "../node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css"
  ],

ça fonctionne bien pour moi

4 votes

Voici la vraie réponse correcte. Ne jamais utiliser style.css pour importer d'autres fichiers css. TOUJOURS utiliser le fichier angular.json.

0 votes

@Bluex pourquoi est-ce mieux?

0 votes

@Rocco parce que c'est comme du style css en ligne.. ça fonctionne mais ce n'est pas une bonne solution, c'est plutôt le pire

19voto

cmcevoy Points 141

J'ai réussi à le faire fonctionner en suivant ces étapes :

1) Importez ce thème (ou un autre) Material dans votre fichier css principal :

@import "../node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css";

2) Assurez-vous également d'enregistrer ce fichier css principal avec le fichier app.component

@Component({
  selector: 'app',
  styleUrls: [
    './app.component.css'
  ]
})

3) Vérifiez à nouveau que les composants dont vous avez besoin sont importés de @angular/material dans votre fichier app.module

import { MdCardModule, MdInputModule } from '@angular/material';

0 votes

Cela a sauvé mon temps. Merci.

0 votes

Ne fonctionne pas car node_modules\@angular\material_theming.scss prend le dessus

4voto

The Aelfinn Points 3530

Si cela se produit pendant les tests avec Karma, ajoutez le pattern suivant à la liste des files dans votre fichier karma.config.js.

module.exports = function (config) {
   config.set({
    basePath: '',
    ...,
    files: [
        {pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: true}
    ],
    ...
}

Pour plus de détails, voir ici: https://www.bountysource.com/issues/44073085-a-testing-with-material-components-guide-to-demonstrate-including-core-theme-in-test-suite

3voto

LargeDachshund Points 561

Si vous utilisez Angular-CLI, vous devrez faire référence au fichier de thèmes, par exemple "candy.scss", dans le fichier .angular-cli.json. Regardez attentivement, avez-vous un fichier *.scss? C'est un fichier Sass. Regardez ici pour plus d'informations: Instructions de theming Angular Material 2. Ainsi, dans le fichier .angular-cli.json, sous la propriété styles, ajoutez "themes/candy.scss", à côté de "themes/styles.css". J'ai un dossier dans mes projets appelé "themes". J'ai mis les styles.css et le candy.scss dans le dossier themes. Maintenant, Angular-CLI peut trouver votre thème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X