Sandeep Chikhale
Sandeep Chikhale

Reputation: 1515

How to change app wide css in Angular 2?

In my application I have different CSS file like fire.css, lake.css each giving different look to complete application.

Currently, I implemented with only 1 file main.css and added this file to
index.html

<link rel="stylesheet" href="resources/styles/main.css">  
<link rel="stylesheet" href="resources/styles/themes.css">
<link rel="stylesheet" href="resources/styles/common.css">
<link rel="stylesheet" href="resources/styles/plugins.css">

Now I wanted to change this dynamically as user select from the drop-down list.

My Idea: Copy all css files to app folder and add themes there.
Folder structure is

app
|-----app.component.ts
|-----app.routes.ts
|-----main.css
|-----lake.css
|-----Login
|-----Other Components...

I added css to styleUrls in app.components.ts App component now is

import { Component } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';

@Component({

    selector: 'workshop-app',    
    template: `
        <body>
           <router-outlet></router-outlet>
       </body>
    `,
    directives : [ ROUTER_DIRECTIVES ],
    styleUrls : ['app/lake.css']
})
export class AppComponent { }

Contents from Lake.css file is added to style tag under but not making changes in the app.

Upvotes: 3

Views: 4651

Answers (2)

sevnur tatar
sevnur tatar

Reputation: 1

Use fileReplacements in Angular.json file:

"configurations": {
  "yourproject": { ... },
  "staging": {
    "fileReplacements": [
      {
        "replace": "src/styles.css",
        "with": "src/new-styles.css"
      }
    ]
  }
}

You can check the usage better here: https://angular.io/guide/build

Upvotes: -1

Hiep Tran
Hiep Tran

Reputation: 4093

add this to the app.component.html

<head>
<link id="theme" rel='stylesheet' href='demo.css'>    
</head>  

add this to app.component.ts

import { Component, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';    
constructor (@Inject(DOCUMENT) private document) { }
ngOnInit() {
  this.document.getElementById('theme').setAttribute('href', 'demo2.css');
}

Upvotes: 6

Related Questions