角度材料图标不起作用

50 angular-material angular-material2 angular

我已经安装了角度材料,

我在我的app模块上导入了MatIconModule(带import { MatIconModule } from '@angular/material/icon';)

我在我的ngmodule导入下添加了:

@NgModule({
    imports: [ 
//...
MatIconModule, 
//...
Run Code Online (Sandbox Code Playgroud)

我已经导入了所有样式表

我还在我的应用程序组件中导入它,实际上(尝试)使用它们(import {MatIconModule} from '@angular/material/icon';在它的开头有另一行).

但材料图标仍然没有出现.

例如,使用此行:

<button mat-icon-button (click)="snav.toggle()"><mat-icon>menu</mat-icon></button>
Run Code Online (Sandbox Code Playgroud)

我期待这样的事情:

预期

但我明白了:

实际

有什么建议吗?

Bas*_*ani 96

为Material Icons添加CSS样式表!

将以下内容添加到index.html:

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

请参阅 - https://github.com/angular/material2/issues/7948

  • 您也可以在styles.css中添加:@import“〜material-icons / iconfont / material-icons.css”;`。 (6认同)
  • @PooshonBanerjee material-icons 是一个单独的项目,不由 Angular Material 团队维护。 (6认同)
  • 这个答案对我有用,但是我也可以将此行添加到styles.css中,并且它可以工作。@import'https://fonts.googleapis.com/icon?family=Material+Icons'; (2认同)

kat*_*des 63

对于 Angular 6+:

  1. npm 安装这个: npm install material-design-icons
  2. 将样式添加到 angular.json:

    "styles": [
      "node_modules/material-design-icons/iconfont/material-icons.css"
    ]
    
    Run Code Online (Sandbox Code Playgroud)

  • 这是正确的角度方法! (2认同)

gra*_*vic 23

就我而言,应用了一种覆盖字体系列的样式。因此,我像这样明确添加了字体系列样式:

.material-icons{
    font-family: 'Material Icons' !important;
}
Run Code Online (Sandbox Code Playgroud)


Ved*_*ran 14

如果使用SASS,则必须将此行添加到主.scss文件中:

@import url(“ https://fonts.googleapis.com/icon?family=Material+Icons ”);


Mah*_*abu 12


Moh*_*Mrg 11

首先,请考虑您需要将样式插入到项目中:

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

如果问题没有解决,我猜您正在使用另一种带有 !important 的字体,请尝试将此 css 类添加到 style.css (或 style.scss)中,这是通用/公共 CSS :

mat-icon{
  font-family: 'Material Icons' !important;
}
Run Code Online (Sandbox Code Playgroud)

参考这个答案:https://github.com/angular/components/issues/5863#issuecomment-316307387


Kha*_*bir 8

您必须导入MatIconModule并在index.html中使用以下网址

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)


YCF*_*F_L 8

完整的解决方案可以是:

步骤1

您必须MatIconModule在您的项目中导入,在我的项目中,我在单独的文件中导入必要的组件,然后将其导入 AppModule,您可以使用它或直接导入它们:

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 { }
Run Code Online (Sandbox Code Playgroud)

第二步

在您的index.html: 中加载图标字体

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)