Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular Material - Can't resolve '@angular/material/theming'

I have followed the official guide and created a app-theme.scss with the following content:

@import '~@angular/material/theming';    
@include mat-core();    
$candy-app-primary: mat-palette($mat-indigo);
$candy-app-accent:  mat-palette($mat-pink, A200, A100, A400);    
$candy-app-warn:    mat-palette($mat-red);    
$candy-app-theme: mat-light-theme($candy-app-primary, $candy-app-accent, $candy-app-warn);    
@include angular-material-theme($candy-app-theme);

Content of styles.css:

@import './app-theme.scss';

However, I always get the following error during compilation: Module not found: Error: Can't resolve '@angular/material/theming'. What must I do to make it work?

like image 306
nkxandroid Avatar asked Aug 05 '17 17:08

nkxandroid


2 Answers

Solved:

The Angular Material 2 documentation assumes you are using sass style-sheets by default. This is never clearly communicated or explained. The steps listed below can be used to resolve this issue.

  1. Rename styles.css to styles.scss and set its content to @import './app-theme';
  2. In angular-cli.json, change styles: ["styles.css"] to styles: ["styles.scss"]
  3. Restart npm
like image 61
nkxandroid Avatar answered Oct 11 '22 12:10

nkxandroid


Angular 6+ --- Get all in one command

In Angular 6+, you simply need to install angular-material like

ng add @angular/material

What this command does? well see here

  1. Installs angular material, cdk, animations
  2. Adds references to the app.module.ts
  3. Adds material-icons' reference to the index.html
  4. It asks you to select the theme of your choice and adds reference to the angular.json (if theme does not work, import it in styles.css/styles.scss as described below)

but in previous versions, you were doing these steps manually

Angular 5

Using Angular5+, one or both import methods will work for you

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

@import "~@angular/material/prebuilt-themes/indigo-pink.css"; // in official docs
like image 36
WasiF Avatar answered Oct 11 '22 13:10

WasiF