Angular material Could not find Angular Material core theme
Asked Answered
T

18

132

In my Angular2 project I install lastest material plugin from https://material.angular.io/guide/getting-started. Next I add @import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; to my css file for my component. But in my console Angular shows this error:

material.es5.js:148 Could not find Angular Material core theme. Most Material components may not work as expected. For more info refer to the theming guide: https://material.angular.io/guide/theming`

The material components not working. Whats wrong?

Talkington answered 28/5, 2017 at 18:51 Comment(4)
If I recall correctly, this file is a SASS file (.scss), maybe you can try with that?Antipyrine
I don't have any sass fileTalkington
No, you don't have sass files, but the angular material module does. That's how you use your own theme (again, if I recall correctly), so try seeing in the node module if it's a SASS or css file.Antipyrine
If you're working on a custom theming project, and you added a file to your "angular.json" file, make sure you stop the ng serve and restart it for the new "theme.scss" to load.Actin
A
254

Please insert below code into your styles.css which is located in your src folder.

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

You can select any css under the prebuilt-themes folder.

Anywise answered 8/6, 2017 at 12:55 Comment(6)
Just as @jelbourn mentioned at Issues 4739: Load prebuilt-themes in Global (styles.css), rather than in Component's styleUrls.Pilpul
Use ~ for easier path to node modules. Example: @import '~@angular/material/prebuilt-themes/deeppurple-amber.css';Alphanumeric
As @Alphanumeric said, tilde "~" allows you to avoid issues with paths. See https://mcmap.net/q/101104/-what-does-a-tilde-in-a-css-url-do for a better explanation why.Mayramays
why is this not handled by angular add @angular/material itself?Ruffina
@Trevor the link has become broken, that paragraph is not there anymoreHettie
Updated link to docs: material.angular.io/guide/theming#using-a-pre-built-themeParik
F
38

put that code into your angular-cli.json file

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

it's works fine for me

Facture answered 19/6, 2018 at 11:17 Comment(5)
This is the real correct answer. Never use style.css for import other css. ALWAYS use angular.json file.Phionna
@Bluex why is this better?Canaveral
@Canaveral because it’s like style css in-line.. it works but is not a good solution rather is the worstPhionna
This is the best answer. If you get this error with later versions 9+ after running ng add @angular/material just terminate the batch job and re-run the app, sometimes the configs aren't fully loaded when compiling.Celom
The latest docs demand this approach ... material.angular.io/guide/theming#using-a-pre-built-themeCoronagraph
P
20

I got it working with the following steps:

1) Import this (or other) Material theme into your main css file:

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

2) Also make sure to register this main css file with the app.component file

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

3) Double check that the components you need are imported from @angular/material in your app.module file

import { MdCardModule, MdInputModule } from '@angular/material';
Preclinical answered 26/7, 2017 at 11:0 Comment(1)
not working because node_modules\@angular\material_theming.scss is overridingHectometer
G
10

Add the following line to your src/styles.css

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

You can try other Css classes as well. Here are the available classes:

@import '~@angular/material/prebuilt-themes/indigo-pink.css';

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

@import '~@angular/material/prebuilt-themes/pink-bluegrey.css';

@import '~@angular/material/prebuilt-themes/purple-green.css';

Gobioid answered 15/4, 2019 at 14:59 Comment(1)
not working because node_modules\@angular\material_theming.scss is overridingHectometer
P
6

Add:

@import "~@angular/material/prebuilt-themes/indigo-pink.css"

to your style.css

Phoebephoebus answered 14/11, 2017 at 12:55 Comment(0)
E
6

If you need only the material icons and you don't want import the whole material css use this, in your root css:

/** disable angular mat theme warning */
.mat-theme-loaded-marker {
  display: none;
}
Easley answered 14/2, 2019 at 9:24 Comment(0)
R
4

If this is happening during testing with Karma, add the following pattern to the files list in your karma.config.js file.

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

For more detail see here: https://www.bountysource.com/issues/44073085-a-testing-with-material-components-guide-to-demonstrate-including-core-theme-in-test-suite

Remarque answered 20/8, 2017 at 23:45 Comment(0)
G
4

Add

@import '@angular/material/prebuilt-themes/deeppurple-amber.css'

to the style.css file, OR add

<link href="node_modules/@angular/material/prebuilt-themes/indigo-pink.css" rel="stylesheet">

in the head section of index.html file

Grocer answered 4/6, 2020 at 7:16 Comment(0)
A
3

If you're using Angular-CLI, you'll need to make a reference to the themes file, e.g. "candy.scss" in the .angular-cli.json file. Look closely, do you have a *.scss? It's a Sass file. Look here for information: Angular Material 2 Theming instructions. So, in the .angular-cli.json, under the styles property, add "themes/candy.scss", next to the "themes/styles.css". I have a folder in my projects called "themes". I put the styles.css and the candy.scss in the themes folder. Now, Angular-CLI can find your theme.

Amylolysis answered 23/8, 2017 at 22:50 Comment(0)
A
3

I don't know how many may find this useful, but restarting ng server worked after trying different solutions from Stack overflow.

Antiquated answered 6/7, 2020 at 12:16 Comment(0)
O
2

In addition to @import statements as mentioned above. Please ensure you add encapsulation: ViewEncapsulation.None inside @Component decorator.

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

If you are looking for Angular Material setup for .Net core 1.1 or 2.0 Angular SPA visual studio template. Please find the well documented setup instruction details here.

Oversize answered 12/12, 2017 at 12:1 Comment(0)
J
0

worked for me adding in css section of index.html

 <link href="node_modules/@angular/material/prebuilt-themes/indigo-pink.css" rel="stylesheet">

As mentioned here here

Jovita answered 20/4, 2018 at 7:45 Comment(0)
P
0

Check any other @imports in your css or scss file. I experienced this issue and could not resolve it until other imports had been removed.

Phyliciaphylis answered 12/2, 2019 at 11:18 Comment(0)
L
0

Add @import "~@angular/material/prebuilt-themes/indigo-pink.css"; to style.css of your angular project .

In case you want any other theme just folow the steps: Node modules -> @angular -> material -> prebuilt-themes ->

i)deeppurple-amber : @import "~@angular/material/prebuilt-themes/deeppurple-amber.css

ii)indigo-pink : @import "~@angular/material/prebuilt-themes/indigo-pink.css

iii)pink-bluegrey : @import "~@angular/material/prebuilt-themes/pink-bluegrey.css

iv)purple-green : @import "~@angular/material/prebuilt-themes/purple-green.css

And if you want to read you can visit :Theming your Angular Material app

Latimore answered 8/8, 2019 at 15:58 Comment(0)
G
0

I had the same error as you and I found the solution in one of the comments. Since that solution worked for me, I want to post it as an answer.

If your project was already running and you installed your material components afterwards, you need to restart your project first. That alone can be the fix already.

Gaughan answered 15/1, 2020 at 8:15 Comment(0)
P
0

Material design modules contains scss, migrate css files into scss from following two steps:

  1. npm i schematics-scss-migrate
  2. ng g schematics-scss-migrate:scss-migrate

Hope this works fro everyone :)

Proceed answered 19/6, 2021 at 3:18 Comment(0)
E
0

I also encountered the same error once. What worked for me was to stop and restart ng serve. If you are serving your angular app when adding material or making changes in angular.json, you must restart ng serve for changes to take effect.

Enriquetaenriquez answered 10/6, 2023 at 5:9 Comment(0)
A
0

If you import like this import { MatTableDataSource, MatTableModule } from '@angular/material/table';

But you don't use one of them. Delete it, error solved.

FOREXAMPLE:

From

import { MatTableDataSource, MatTableModule } from '@angular/material/table';

TO

import { MatTableModule } from '@angular/material/table';

Abbotsun answered 3/5, 2024 at 8:23 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.