I\'ve installed Material for angular,
I\'ve imported on my app module MatIconModule (with import { MatIconModule } from \'@angular/material/icon\';
)
The full solution can be :
Step one
You have to import MatIconModule
in your project, in my project I import the necessary component in a separate file then I import it in the AppModule, you can use this or import them directly :
import { NgModule } from "@angular/core";
import { MatButtonModule } from '@angular/material';
import { MatIconModule } from '@angular/material/icon';
@NgModule({
imports: [MatIconModule, MatButtonModule], // note the imports
exports: [MatIconModule, MatButtonModule], // and the exports
})
export class MaterialModule { }
Step two
Load the icon font in your index.html
:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Add CSS stylesheet for Material Icons!
Add the following to your index.html:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Refer - https://github.com/angular/material2/issues/7948
In my case the icons did not show up because I has screwed up my fonts by using !important. Taking that out caused the icons to appear.
Wrong Icon Name : Some Material Icon name is wrong.
For example : Material Icon provides filter_alt for
<mat-icon aria-hidden="false" aria-label=" filter icon">filter_alt</mat-icon>
but it shows up
If using SASS you only need to add this line to your main .scss
file:
@import url("https://fonts.googleapis.com/icon?family=Material+Icons");
If you prefer to avoid fetching icons from google you can also self-host the icons as described in Material Icons Guide:
For those looking to self host the web font, some additional setup is necessary. Host the icon font in a location, for example https://example.com/material-icons.woff and add the following CSS rule:
@font-face { font-family: 'Material Icons'; font-style: normal; font-weight: 400; src: url(https://example.com/MaterialIcons-Regular.eot); /* For IE6-8 */ src: local('Material Icons'), local('MaterialIcons-Regular'), url(https://example.com/MaterialIcons-Regular.woff2) format('woff2'), url(https://example.com/MaterialIcons-Regular.woff) format('woff'), url(https://example.com/MaterialIcons-Regular.ttf) format('truetype'); }
In addition, the CSS rules for rendering the icon will need to be declared to render the font properly. These rules are normally served as part of the Google Web Font stylesheet, but will need to be included manually in your projects when self-hosting the font:
.material-icons { font-family: 'Material Icons'; font-weight: normal; font-style: normal; font-size: 24px; /* Preferred icon size */ display: inline-block; line-height: 1; text-transform: none; letter-spacing: normal; word-wrap: normal; white-space: nowrap; direction: ltr; /* Support for all WebKit browsers. */ -webkit-font-smoothing: antialiased; /* Support for Safari and Chrome. */ text-rendering: optimizeLegibility; /* Support for Firefox. */ -moz-osx-font-smoothing: grayscale; /* Support for IE. */ font-feature-settings: 'liga'; }
In my case, there was a style applied that overrides font family. So, I added font family style explicitly like this:
.material-icons{
font-family: 'Material Icons' !important;
}