Angular Icon (アイコン) コンポーネントの概要
Ignite UI for Angular Icon コンポーネントはアイコンおよびフォント ファミリを統合するため、交互の使用やマテリアル アイコンをマークアップに追加できます。
Angular Icon の例
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxIconModule } from "igniteui-angular" ;
import { IconSample1Component } from "./icon-sample-1/icon-sample-1.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
IconSample1Component
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxIconModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
@Component ({
selector : 'app-icon-sample-1' ,
styleUrls : ['./icon-sample-1.component.scss' ],
templateUrl : './icon-sample-1.component.html'
})
export class IconSample1Component { }
ts コピー <div class ="wrapper" >
<div class ="icon-sample" >
<igx-icon > sentiment_very_satisfied</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > home</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > airplanemode_active</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > favorite</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon [active ]="false" > search</igx-icon >
</div >
</div >
html コピー .wrapper {
display : flex;
flex-flow : row wrap;
margin : 16px 0 ;
}
.icon-sample {
display : flex;
flex : 1 0 20% ;
width : 44px ;
height : 44px ;
justify-content : center;
align-items : center;
}
scss コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
Ignite UI for Angular Icon を使用した作業の開始
Ignite UI for Angular Icon コンポーネントを使用した作業を開始するには、Ignite UI for Angular をインストールする必要があります。既存の Angular アプリケーションで、以下のコマンドを入力します。
ng add igniteui-angular
cmd
Ignite UI for Angular については、「はじめに 」トピックをご覧ください。
次に、app.module.ts ファイルに IgxIconModule
をインポートします。
import { IgxIconModule } from 'igniteui-angular' ;
@NgModule ({
imports : [
...
IgxIconModule,
...
]
})
export class AppModule {}
typescript
あるいは、16.0.0
以降、IgxIconComponent
をスタンドアロンの依存関係としてインポートできます。
import { IgxIconComponent } from 'igniteui-angular' ;
@Component ({
selector : 'app-home' ,
template : '<igx-icon [style.color]="color">home</igx-icon>' ,
styleUrls : ['home.component.scss' ],
standalone : true ,
imports : [IgxIconComponent],
})
export class HomeComponent {
public color = '#e41c77' ;
}
typescript
Ignite UI for Angular Icon モジュールまたはコンポーネントをインポートしたので、igx-icon
コンポーネントの使用を開始できます。
Angular Icon の使用
アイコンの色
style.color
CSS プロパティを使用して、デフォルトの色を変更します。
<igx-icon [style.color ]="#e41c77" > home</igx-icon >
html
アイコンの無効化
アイコンを無効にするには、active
を使用できます。
<igx-icon [active ]="false" > volume_off</igx-icon >
html
コンテンツ プロジェクション
コンテンツ プロジェクションでアイコンを設定できます。
<igx-icon > bluetooth</igx-icon >
html
アイコンのサイズ
CSS を使用してアイコンをカスタマイズできます。アイコンのサイズを変更するには、--size
CSS 変数を使用します。
.custom-size {
--size: 56px ;
}
scss
SVG アイコン
SVG 画像はアイコンとして使用できます。はじめに IgxIconService
依存を注入します。この例ではコンポーネントのコンストラクタに注入されますが、コード内の必要な場所に使用できます。
addSvgIcon
メソッドを SVG ファイルをキャッシュにインポートするために使用します。SVG をキャッシュした場合、アプリケーションのどこでも使用できるようになります。アイコン名とファイル URL がメソッドに必須のパラメーターです。ファミリも指定できます。HTML マークアップの SVG ファイルを使用できます。または addSvgIconFromText
メソッドを使用して SVG ファイルをインポートして、SVC テキスト コンテンツを使用できます。
同じ名前のアイコンが 2 つある場合に同じファミリ SVG アイコンが優先順位に従って表示されます。
SVG ファイルの画像の幅と高さは指定しないことをお勧めします。
追加のポリフィル スクリプトがインターネット エクスプローラーで必要な場合があります。
constructor (private iconService: IgxIconService ) { }
public ngOnInit ( ) {
this .iconService.addSvgIcon('contains' , '/assets/images/svg/contains.svg' , 'filter-icons' );
}
typescript
<igx-icon name ="contains" family ="filter-icons" > </igx-icon >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxIconModule } from "igniteui-angular" ;
import { SvgIconSampleComponent } from "./svg-icon-sample/svg-icon-sample.component" ;
import { HttpClientModule } from "@angular/common/http" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
SvgIconSampleComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxIconModule,
HttpClientModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit } from '@angular/core' ;
import { IgxIconService } from 'igniteui-angular' ;
@Component ({
selector : 'app-svg-icon-sample' ,
styleUrls : ['./svg-icon-sample.component.scss' ],
templateUrl : './svg-icon-sample.component.html'
})
export class SvgIconSampleComponent implements OnInit {
constructor (private iconService: IgxIconService ) { }
public ngOnInit ( ) {
this .iconService.addSvgIcon('contains' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/contains.svg' , 'filter-icons' );
this .iconService.addSvgIcon('does_not_contain' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/does_not_contain.svg' , 'filter-icons' );
this .iconService.addSvgIcon('does_not_equal' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/does_not_equal.svg' , 'filter-icons' );
this .iconService.addSvgIcon('ends_with' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/ends_with.svg' , 'filter-icons' );
this .iconService.addSvgIcon('equals' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/equals.svg' , 'filter-icons' );
this .iconService.addSvgIcon('is_empty' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/is_empty.svg' , 'filter-icons' );
this .iconService.addSvgIcon('starts_with' , 'https://www.infragistics.com/angular-demos-lob/assets/images/svg/starts_with.svg' , 'filter-icons' );
}
}
ts コピー <div class ="wrapper" >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="contains" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="does_not_contain" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="does_not_equal" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="ends_with" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="equals" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="is_empty" > </igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon family ="filter-icons" name ="starts_with" > </igx-icon >
</div >
</div >
html コピー .wrapper {
display : flex;
flex-flow : row wrap;
margin : 16px 0 ;
}
.icon-sample {
display : flex;
flex : 1 0 10% ;
height : 44px ;
justify-content : center;
align-items : center;
}
scss コピー
マテリアル シンボル
さらに、ユーザーは新しく作成されたマテリアル シンボル ライブラリ
に含まれる最新のマテリアル アイコンとそのデザイン バリエーションを利用できます。マテリアル シンボルの使用を開始するには、まずライブラリをアプリケーションに追加する必要があります。
<link href ="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel ="stylesheet" />
html
次に、IgxIconService
依存関係を注入し、その setFamily
メソッドを利用して、マテリアル シンボルが igx-icon
で動作できるようにする必要があります。
constructor (private iconService: IgxIconService ) { }
public ngOnInit ( ) {
this .iconService.setFamily('material-symbols' , { className : 'material-symbols-outlined' , type : 'liga' });
}
ts
これで、目的のアイコンをマークアップに追加し、調整可能なフォント スタイルを使用してカスタマイズする準備が整いました。
<igx-icon family ="material-symbols" name ="diamond" class ="custom-icon" > </igx-icon >
html
.custom-icon {
font-variation-settings : "FILL" 0 , "wght" 200 , "GRAD" 0 , "opsz" 40 ;
}
scss
マテリアル シンボル スタイルの詳細については、公式ドキュメント
をご覧ください。
サーバーサイド レンダリング時の注意
Angular Universal を使用してアプリケーションにサーバー側のレンダリング ロジックを実装し、IgxIconService
を使用してアイコンを登録した場合は、以下の例外が発生することがあります。
XMLHttpRequest is not defined. Could not fetch SVG from url.
(XMLHttpRequest が定義されていません。url から SVG をフェッチできませんでした。)>
これを避けるためには、以下の順序に従って下さい。
`xmlhttprequest` のインストール:
npm i xmlhttprequest
cmd
`server.ts` ファイル以外に追加するファイル:
(global as any ).XMLHttpRequest = require ('xmlhttprequest' ).XMLHttpRequest;
typescript
スタイル設定
アイコンのスタイル設定を始めるには、すべてのテーマ関数とコンポーネント ミックスインが存在する index
ファイルをインポートする必要があります。
@use "igniteui-angular/theming" as *;
scss
最も簡単な方法は、icon-theme
を拡張し、必要に応じてアイコンをカスタマイズするために必要なパラメーターを受け入れる新しいテーマを作成する方法です。
$custom-icon-theme : icon-theme(
$color : #1481b8 ,
$disabled-color : #494949 ,
);
scss
最後には、カスタム アイコン テーマをアプリケーションに渡します。
@include css-vars($custom-icon-theme );
scss
デモ
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxIconModule } from "igniteui-angular" ;
import { IconStylingSampleComponent } from "./icon-styling-sample/icon-styling-sample.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
IconStylingSampleComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxIconModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
@Component ({
selector : 'app-icon-styling-sample' ,
styleUrls : ['./icon-styling-sample.component.scss' ],
templateUrl : './icon-styling-sample.component.html'
})
export class IconStylingSampleComponent { }
ts コピー <div class ="wrapper" >
<div class ="icon-sample" >
<igx-icon > person</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > wifi</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > laptop_mac</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon > pin_drop</igx-icon >
</div >
<div class ="icon-sample" >
<igx-icon [active ]="false" > cloud</igx-icon >
</div >
</div >
html コピー @use '../../variables' as *;
$custom-icon-theme : icon-theme(
$color : #1481b8 ,
$disabled-color : #494949
);
.wrapper {
display : flex;
flex-flow : row wrap;
margin : 16px 0 ;
}
.icon-sample {
display : flex;
flex : 1 0 20% ;
width : 44px ;
height : 44px ;
justify-content : center;
align-items : center;
}
:host {
.igx-icon :hover {
color : #0a415c ;
}
@include css-vars($custom-icon-theme );
}
scss コピー
カスタム サイズ変更
igx-icon
を直接ターゲットとして --size
変数を使用することができます。
igx-icon {
--size: 50px ;
}
scss
または、ユニバーサル変数 --igx-icon-size
を使用して、すべてのインスタンスをターゲットにすることもできます。
<div class ="my-app" >
<igx-icon > </igx-icon >
</div >
html
.my-app {
--igx-icon -size: 50px ;
}
scss
事前定義されたサイズの 1 つを使用して、それを --ig-size
変数に割り当てることもできます。--ig-size
に使用可能な値は、--ig-size-small
、--ig-size-medium
、--ig-size-large
です。
igx-icon {
--ig-size: var(--ig-size-medium);
}
scss
詳細については、サイズ の記事をご覧ください。
API リファレンス
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。