58 votes

Angular 2 - Fichier CSS global

Est-il possible d'ajouter un fichier CSS global à Angular 2 ? Actuellement, j'ai de nombreux composants différents qui ont le même style de bouton - mais chacun des composants a son propre fichier CSS avec le style. C'est frustrant pour les modifications.

J'ai lu quelque part sur Stack Overflow qu'il fallait ajouter :

import { ViewEncapsulation } from '@angular/core'; //add this

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.None            //add this
})

J'ai donc ajouté les lignes ViewEncapsulation dans le composant Root, puis j'ai ajouté le style CSS au CSS de l'application Root (app.component.css) et supprimé le style CSS des fichiers CSS des composants individuels, mais cela n'a pas fonctionné.

Il existe sûrement un moyen d'ajouter un fichier CSS global ? Dois-je ajouter quelque chose aux composants individuels pour qu'ils accèdent au fichier CSS global ?

3 votes

C'est la bonne façon de procéder. Cela devrait fonctionner. Quand vous dites que ça ne marche pas, que se passe-t-il exactement ? Tous les boutons des sous-composants sont-ils différents ? Quel est l'aspect d'un bouton si vous ajoutez un bouton dans votre modèle de composant d'application. A-t-il le bon aspect ?

0 votes

Le style global ne serait pas appliqué du tout.

1 votes

Cela fonctionne bien ;)

84voto

renocor Points 884

Il suffit d'écrire vos styles globaux dans votre src/styles.css fichier. Ce fichier sera ajouté à styles.bundle.js lorsque vous exécutez ng build .

Si vous souhaitez ajouter d'autres fichiers de style, vous pouvez le faire dans votre fichier .angular-cli.json (ou angular.json pour Angular 6+). Dans ce fichier, vous verrez un tableau appelé styles avec un seul élément par défaut, à savoir styles.css (ou src/styles.css dans Angular 6). Vous pouvez même inclure .scss des fichiers.


Utilisation du SCSS

Si vous souhaitez utiliser SCSS, il suffit de modifier l'extension de votre fichier src/styles.css pour .scss puis reflétez le changement dans votre .angular-cli.json (ou angular.json en 6+), en modifiant l'entrée dans le fichier styles le tableau.

Faire en sorte qu'Angular utilise SCSS par défaut

Lors de la création de composants, vous aimeriez qu'Angular crée .scss au lieu des fichiers de style .css . Voici comment :

Angulaire 7

À partir d'Angular 7, lorsque vous créez une application avec l'option ng new appname il vous sera demandé quel format de feuille de style vous souhaitez utiliser, vous choisirez donc SCSS ( source ). Il semble qu'ici se termine la nécessité de configurer manuellement Angular pour utiliser SCSS.

Angulaire 6

Ajoutez ceci à la fin de votre angular.json fichier ( source ):

"schematics": {
  "@schematics/angular:component": {
    "styleext": "scss"
  }
}

Angular 4 et inférieur

Trouvez-le à la fin de votre .angular-cli.json et modifiez la valeur de styleExt a scss :

"defaults": {
  "styleExt": "css",
  "component": {}
}

1 votes

Il s'agit d'un ajout important à cette question - car elle est plus pertinente avec les nouvelles versions d'Angular. J'ai récemment créé un nouveau projet avec une nouvelle installation d'Angular CLI et (par habitude) j'ai inclus manuellement l'importation CSS (conformément à la réponse choisie dans cette question), ce qui a entraîné une erreur dans la console du navigateur. Une fois que j'ai supprimé la déclaration d'importation CSS manuelle dans le HTML, j'ai remarqué que le style CSS de styles.css était appliqué. Il est dommage que je n'aie pas vu cette réponse avant de commencer le nouveau projet...

2 votes

Au moment de cette question, ce n'était pourtant pas la bonne réponse. Dois-je mettre à jour la "bonne réponse" pour tenir compte de la mise à jour d'Angular ? Techniquement la question faisait référence à Angular 2...

2 votes

Que faire si vous n'utilisez pas angular-cli avec Angular 4 ?

28voto

Abraham Points 485

Vous pouvez simplement importer les css dans le fichier html principal.

5 votes

J'ai complètement manqué le fait que le CLI d'Angular 2 crée et inclut un fichier 'styles.css' en tant que CSS global script dans le fichier index.html. J'ai juste ouvert le fichier pour voir "/* Vous pouvez ajouter des styles globaux à ce fichier, et également importer d'autres fichiers de style */". Merci axl_80.

2 votes

De rien, je suis heureux de savoir que j'ai pu vous aider. Bonne chance dans votre projet ;)

0 votes

Et s'il n'y a pas de fichier html. Je suis en train de créer une bibliothèque Angular.

4voto

Ahmad Aghazadeh Points 8690

Vous pouvez utiliser :

  1. Ajouter main.css
  2. Ouvrez styles.css dans le dossier principal
  3. Ajoutez cette ligne (@import 'main.css' ;)

enter image description here

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