---
title: Icon コンポーネント | MITライセンス
description: Ignite UI for Angular Icon コンポーネントを使用して、様々なアイコンおよびフォント セットを統合して交互に使用し、カスタム色を定義できます。
keywords: Ignite UI for Angular, UI コントロール, Angular ウィジェット, web ウィジェット, UI ウィジェット, Angular, ネイティブ Angular コンポーネント スィート, ネイティブ Angular コントロール, ネイティブ Angular コンポーネント ライブラリ, Angular Icon コンポーネント, Angular Icon コントロール
license: MIT
_language: ja
---

# Angular Icon (アイコン) コンポーネントの概要

<div class="highlight">
The Ignite UI for Angular Icon component unifies icon/font families so developers can use them interchangeably and add material icons to markup.
</div>

## Angular Icon の例

<hr/>

## Ignite UI for Angular Icon を使用した作業の開始

Ignite UI for Angular Icon コンポーネントを使用した作業を開始するには、Ignite UI for Angular をインストールする必要があります。既存の Angular アプリケーションで、以下のコマンドを入力します。

```cmd
ng add igniteui-angular
```

Ignite UI for Angular については、「[はじめに](general/getting-started.md)」トピックをご覧ください。

次に、**app.module.ts** ファイルに `IgxIconModule` をインポートします。

```typescript
// app.module.ts

// import { IgxIconModule } from '@infragistics/igniteui-angular'; for licensed package

@NgModule({
    imports: [
        ...
        IgxIconModule,
        ...
    ]
})
export class AppModule {}
```

あるいは、`16.0.0` 以降、`IgxIconComponent` をスタンドアロンの依存関係としてインポートできます。

```typescript
// home.component.ts

// import { IgxIconComponent } from '@infragistics/igniteui-angular'; for licensed package

@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';
}
```

Ignite UI for Angular Icon モジュールまたはコンポーネントをインポートしたので、`igx-icon` コンポーネントの使用を開始できます。

## Angular Icon の使用

### アイコンの色

`style.color` CSS プロパティを使用して、デフォルトの色を変更します。

```html
<igx-icon [style.color]="#e41c77">home</igx-icon>
```

### アイコンの無効化

アイコンを無効にするには、を使用できます。

```html
<igx-icon [active]="false">volume_off</igx-icon>
```

### コンテンツ プロジェクション

コンテンツ プロジェクションでアイコンを設定できます。

```html
<igx-icon>bluetooth</igx-icon>
```

### アイコンのサイズ

CSS を使用してアイコンをカスタマイズできます。アイコンのサイズを変更するには、`--size` CSS 変数を使用します。

```scss
.custom-size {
  --size: 56px;
}
```

## SVG アイコン

SVG 画像はアイコンとして使用できます。はじめに 依存を注入します。この例ではコンポーネントのコンストラクタに注入されますが、コード内の必要な場所に使用できます。

メソッドを SVG ファイルをキャッシュにインポートするために使用します。SVG をキャッシュした場合、アプリケーションのどこでも使用できるようになります。アイコン名とファイル URL がメソッドに必須のパラメーターです。ファミリも指定できます。HTML マークアップの SVG ファイルを使用できます。または `addSvgIconFromText` メソッドを使用して SVG ファイルをインポートして、SVC テキスト コンテンツを使用できます。

- 同じ名前のアイコンが 2 つある場合に同じファミリ SVG アイコンが優先順位に従って表示されます。
- SVG ファイルの画像の幅と高さは指定しないことをお勧めします。
- 追加のポリフィル スクリプトがインターネット エクスプローラーで必要な場合があります。

```typescript
constructor(private iconService: IgxIconService) { }

public ngOnInit() {
    // register custom SVG icons
    this.iconService.addSvgIcon('contains', '/assets/images/svg/contains.svg', 'filter-icons');
}
```

```html
<igx-icon name="contains" family="filter-icons"></igx-icon>
```

## マテリアル シンボル

さらに、ユーザーは新しく作成された[`マテリアル シンボル ライブラリ`](https://fonts.google.com/icons)に含まれる最新のマテリアル アイコンとそのデザイン バリエーションを利用できます。マテリアル シンボルの使用を開始するには、まずライブラリをアプリケーションに追加する必要があります。

```html
<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"/>
```

次に、依存関係を注入し、その `setFamily` メソッドを利用して、マテリアル シンボルが `igx-icon` で動作できるようにする必要があります。

```ts
constructor(private iconService: IgxIconService) { }

public ngOnInit() {
    // registers a 'material-symbols-outlined' class to be applied to all igx-icons with 'material-symbols' font-family
    this.iconService.setFamily('material-symbols', { className: 'material-symbols-outlined', type: 'liga' });
}
```

これで、目的のアイコンをマークアップに追加し、調整可能なフォント スタイルを使用してカスタマイズする準備が整いました。

```html
<igx-icon family="material-symbols" name="diamond" class="custom-icon"></igx-icon>
```

```scss
.custom-icon {
  font-variation-settings: "FILL" 0, "wght" 200, "GRAD" 0, "opsz" 40;
}
```

マテリアル シンボル スタイルの詳細については、[`公式ドキュメント`](https://fonts.google.com/icons)をご覧ください。

## サーバーサイド レンダリング時の注意

<DocsAside type="info" title="情報">
Angular Universal を使用してアプリケーションにサーバー側のレンダリング ロジックを実装し、`IgxIconService` を使用してアイコンを登録した場合は、以下の例外が発生することがあります。
<br/><br/>`XMLHttpRequest is not defined. Could not fetch SVG from url.` (XMLHttpRequest が定義されていません。url から SVG をフェッチできませんでした。)> <br/><br/>
これを避けるためには、以下の順序に従って下さい。
</DocsAside>
<ol>
<li>
`xmlhttprequest` のインストール:

<ol>
<li>
`server.ts` ファイル以外に追加するファイル:

```cmd
npm i xmlhttprequest
```

</li>
<li>
On the top of your `server.ts` file, add:

```typescript
(global as any).XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
```

</li>
</ol>
</li>
</ol>

## スタイル設定

アイコンのスタイル設定を始めるには、すべてのテーマ関数とコンポーネント ミックスインが存在する `index` ファイルをインポートする必要があります。

```scss
@use "igniteui-angular/theming" as *;

// 重要: Ignite UI for Angular 13 より前のバージョンは、次を使用してください。
// @import '~igniteui-angular/lib/core/styles/themes/index';
```

最も簡単な方法は、を拡張し、必要に応じてアイコンをカスタマイズするために必要なパラメーターを受け入れる新しいテーマを作成する方法です。

```scss
$custom-icon-theme: icon-theme(
  $color: #1481b8,
  $disabled-color: #494949,
);
```

最後には、カスタム アイコン テーマをアプリケーションに渡します。

```scss
:host {
  @include tokens($custom-icon-theme);
}
```

### デモ

### SVG の制限

カスタム SVG アイコンを使用する場合、は `<svg>` 要素自体の色のみを適用および上書きできることに注意することが重要です。SVG 内に `<path>`、`<rect>`、`<circle>`、`<g>` などの子要素が含まれており、それらにハードコードされたカラー値が設定されている場合、その色はテーマから上書きできません。

例:

```html
<svg>
    <path fill="#050d42"/>
</svg>
```

このような場合、アイコンは常に `<path>` 要素内で定義された `#050d42` の色を使用し、テーマで指定された色は反映されません。

```html
<svg fill="#050d42">
    <path .../>
</svg>
```

ここでは、塗りつぶしの色が `<svg>` 要素に適用されているため、で提供されるカスタム カラーで上書きできます。

アイコン全体を を使用してスタイル設定できるように、SVG 子要素にハードコードされた色を使用しないことをお勧めします。ただし、子要素にハードコードされた色を適用する場合は、Ignite UI のカラー変数を使用することもできます。

```html
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  <!-- This element uses the theme color from the igx-icon component -->
  <path d="M12 2L15 8H9L12 2Z" />

  <!-- This element uses an accent color from Ignite UI palette -->
  <circle cx="12" cy="17" r="4" fill="var(--ig-primary-500)" />
</svg>
```

### カスタム サイズ変更

`igx-icon` を直接ターゲットとして `--size` 変数を使用することができます。

```scss
igx-icon {
  --size: 50px;
}
```

または、ユニバーサル変数 `--ig-icon-size` を使用して、すべてのインスタンスをターゲットにすることもできます。

```html
<div class="my-app">
  <igx-icon></igx-icon>
</div>
```

```scss
.my-app {
  --ig-icon-size: 50px;
}
```

事前定義されたサイズの 1 つを使用して、それを `--ig-size` 変数に割り当てることもできます。`--ig-size` に使用可能な値は、`--ig-size-small`、`--ig-size-medium`、`--ig-size-large` です。

```scss
igx-icon {
  --ig-size: var(--ig-size-medium);
}
```

詳細については、[サイズ](display-density.md)の記事をご覧ください。

### Tailwind によるスタイル設定

カスタム Tailwind ユーティリティ クラスを使用して `icon` をスタイル設定できます。まず [Tailwind を設定して](themes/misc/tailwind-classes.md)ください。

グローバル スタイルシートに Tailwind をインポートした上で、以下のように必要なテーマ ユーティリティを適用します:

```scss
@import "tailwindcss";
...
@use 'igniteui-theming/tailwind/utilities/material.css';
```

ユーティリティ ファイルには、`light` テーマと `dark` テーマの両方のバリエーションが含まれています。

- `light-*` クラスはライト テーマ用です。
- `dark-*` クラスはダーク テーマ用です。
- プレフィックスの後にコンポーネント名を追加します (例: `light-icon`、`dark-icon`)。

これらのクラスを適用すると、動的なテーマの計算が可能になります。そこから、`任意のプロパティ`を使用して、生成された CSS 変数をオーバーライドできます。コロンの後に、有効な CSS カラー形式 (HEX、CSS 変数、RGB など) を指定します。

プロパティの完全なリストは、で確認できます。構文は次のとおりです:

```html
<igx-icon class="!light-icon ![--color:#7B9E89] ![--size:48px]">person</igx-icon>
```

<DocsAside type="info" title="情報">
ユーティリティ クラスが優先されるようにするには、感嘆符 (`!`) が必要です。Tailwind はスタイルをレイヤーに適用しますが、これらのスタイルを重要としてマークしないと、コンポーネントのデフォルトのテーマによってオーバーライドしてしまいます。
</DocsAside>

最終的に、icon は次のようになります:

## API リファレンス

<hr/>

- - ## その他のリソース

<hr/>

コミュニティに参加して新しいアイデアをご提案ください。

- [Ignite UI for Angular **フォーラム** (英語)](https://www.infragistics.com/community/forums/f/ignite-ui-for-angular)
- [Ignite UI for Angular **GitHub** (英語)](https://github.com/IgniteUI/igniteui-angular)
