angular 4プロジェクトで https://materialdesignicons.com/ のアイコンを使用したい。ウェブサイトの手順では、Angular 1.x
( https://materialdesignicons.com/getting-started )に含める方法のみを説明しています。
<md-icon svgIcon="source"></md-icon>
およびAngular Material
を使用してng serve
のように使用できるように、マテリアルデザインアイコンを含めるにはどうすればよいですか。
注:すでに異なるgoogle material icons
を含めました!
次の手順に従ってください。
here のAngular Materialセクションの下からmdi.svg
をダウンロードし、assets
フォルダーに配置します。 (プロジェクトのルートから)/src/assets
に配置する必要があります。
アプリのモジュール(別名app.module.ts
)で、次の行を追加します。
import {MatIconRegistry} from '@angular/material/icon';
import {DomSanitizer} from '@angular/platform-browser';
...
export class AppModule {
constructor(private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer){
matIconRegistry.addSvgIconSet(domSanitizer.bypassSecurityResourceUrl('/assets/mdi.svg'));
}
}
assets
の.angular-cli.json
の下にassets
フォルダーが含まれていることを確認してください(デフォルトではありますが):
{
"apps": [
{
...
"assets": [
"assets"
]
}
]
}
最後に、MatIcon
コンポーネントでsvgIcon
入力を使用して使用します。
<mat-icon svgIcon="open-in-new"></mat-icon>
それ以降のバージョンで動作するように、手順を変更しました。
@ creep3007による回答と同様に、.angular-cli.json
でスタイルシートを指定できます。
Npmパッケージをインストールする
npm install material-design-icons --save
材料アイコンを.angular-cli.jsonに追加します
{
"apps": [
{
"styles": [
"../node_modules/material-design-icons/iconfont/material-icons.css"
]
}
]
}
これを使って
<i class="material-icons">visibility</i>
Npmパッケージをインストールする
npm install material-design-icons --save
npm install --save @angular/material @angular/cdk
マテリアルアイコンcssを.angular-cli.jsonに追加します(「ng serve」を再起動することを忘れないでください)
{
"apps": [
{
"styles": [
"node_modules/material-design-icons/iconfont/material-icons.css"
]
}
]
}
またはsrc/styles.scssで
@import '~material-design-icons/iconfont/material-icons.css';
App.module.tsにモジュールをインポートします
import { MatIconModule } from '@angular/material/icon';
...
@NgModule({
imports: [
...,
MatIconModule
],
そしてそのように使用します:
<mat-icon>location_off</mat-icon>
マテリアルデザインアイコンから名前を選択=> https://material.io/tools/icons/?style=baseline
注この回答は、 テンプラリアンのマテリアルデザインアイコン に適用され、Googleの同名のアイコンには適用されません。これらの手順がReadmeに含まれていない理由はわかりませんが、ここで説明します。
まず、パッケージをインストールします。
npm install @mdi/font --save
次に、スタイルシートをstyles.scss
ファイルに追加する必要があります。ファイルの最後に次を追加しました。
//---------------------------------------------------------------------------
// Material Design Icons (https://materialdesignicons.com/)
//---------------------------------------------------------------------------
$mdi-font-path: "~@mdi/font/fonts";
@import "~@mdi/font/scss/materialdesignicons.scss";
注$mdi-font-path
は、@mdi/font/scss/_variables.scss
内のデフォルトセットをオーバーライドするために必要です。これにより、webpackコンパイラがエラーを出します。これを忘れると、次のような一連のエラーが発生します。
./node_modules/css-loader!./node_modules/postcss-loader/lib??ref--3-2!./node_modules/sass-loader/lib/loader.js!./src/styles.scssモジュールのエラー見つかりません:エラー:「/ home/myRepo/myApp」の「../fonts/materialdesignicons-webfont.eot」を解決できません
Edit:これが必要かどうかわかりません(おそらく場合によっては)が、.angular-cli.json
ファイルstyles
も更新しました素子:
"styles": [
"../node_modules/@mdi/icon/font/css/materialdesignicons.min.css",
上記に代わるもう1つの方法は、アイコンを非常に少ない労力で機能させることで、CSSを直接インポートすることでした。 TypeScriptファイルで、styleUrls
要素を置き換えました(Karmaの奇妙なバグを回避するため)。
// styleUrls: ['./graphics-control.component.css'],
styles: [require('./my.component.css'),
require('../pathTo/node_modules/@mdi/font/css/materialdesignicons.min.css')]
Bootstrap 4およびAngularを使用すると、これは機能します。
1)実行:
npm install material-design-icons --save
2)styles.cssまたはstyles.scssに追加します
@import '~material-design-icons/iconfont/material-icons.css';
3):..\node_modules\material-design-icons\iconfont\material-icons.cssに移動し、セクションがこのようになることを確認します( 'MaterialIcons-Regular.woff2')。 。:
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(MaterialIcons-Regular.eot); /* For IE6-8 */
src: local('Material Icons'),
local('MaterialIcons-Regular'),
url('MaterialIcons-Regular.woff2') format('woff2'),
url('MaterialIcons-Regular.woff') format('woff'),
url('MaterialIcons-Regular.ttf') format('truetype');
}
4)HTMLでアイコンを使用:
<i class="material-icons">visibility</i>
@ theMayer answerに基づいて、パッケージ@mdi/font
で機能するバージョンがあります。
1- npm install @mdi/font --save
2- angular.json
のarchitect/buid/options/styles
の下に、"node_modules/@mdi/font/css/materialdesignicons.min.css"
を追加します
3- src\app\app.module.ts
にimport { MatIconModule } from '@angular/material/icon';
を追加し、MatIconModule
セクションにimports
を追加します
4- src\styles.scss
に追加:
$mdi-font-path: "~@mdi/font/fonts";
@import "~@mdi/font/scss/materialdesignicons.scss";
5-たとえば、mat-iconを使用してhtmlにアイコンを追加します。
<mat-icon class="mdi mdi-dumbbell" aria-hidden="true"></mat-icon>