Angular Radio & Radio Group (ラジオ & ラジオ グループ) コンポーネントの概要

    Radio Button (ラジオ ボタン)

    Ignite UI for Angular Radio Button コンポーネントを使用すると、隣に表示されるオプションのセットから単一のオプションを選択する機能を提供します。

    Angular Radio & Radio Group の例

    Ignite UI for Angular Radio Button を使用した作業の開始

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

    ng add igniteui-angular
    

    Ignite UI for Angular については、「はじめに」トピックをご覧ください。

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

    // app.module.ts
    
    ...
    import { IgxRadioModule } from 'igniteui-angular';
    // import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxRadioModule],
        ...
    })
    export class AppModule {
        public selected: any;
    }
    

    あるいは、16.0.0 以降、IgxRadioGroupDirectiveIgxRadioComponent をスタンドアロンの依存関係としてインポートすることも、IGX_RADIO_GROUP_DIRECTIVES トークンを使用してコンポーネントとそのすべてのサポート コンポーネントおよびディレクティブをインポートすることもできます。

    // home.component.ts
    
    import { FormsModule } from '@angular/forms';
    import { IgxRadioComponent, IgxRadioGroupDirective } from 'igniteui-angular';
    // import { IgxRadioComponent, IgxRadioGroupDirective } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: `
        <igx-radio-group>
            <igx-radio [(ngModel)]="selected" value="London">London</igx-radio>
            <igx-radio [(ngModel)]="selected" value="New York">New York</igx-radio>
            <igx-radio [(ngModel)]="selected" value="Tokyo">Tokyo</igx-radio>
            <igx-radio [(ngModel)]="selected" value="Sofia">Sofia</igx-radio>
        </igx-radio-group>
        `,
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [IgxRadioComponent, IgxRadioGroupDirective, FormsModule]
    })
    export class HomeComponent {
        public selected: any;
    }
    

    Ignite UI for Angular Radio Button モジュールまたはディレクティブをインポートしたので、igx-radio-group ディレクティブと igx-radio コンポーネントの使用を開始できます。

    Angular Radio Button の使用

    ラジオ ボタンを表示するには、コンポーネントのテンプレートで以下のコードを追加します。

    <igx-radio [(ngModel)]="selected" value="option1">Option 1</igx-radio>
    <igx-radio [(ngModel)]="selected" value="option2">Option 2</igx-radio>
    

    ラベル

    labelPosition プロパティを使用して、ラジオ コンポーネントのデフォルトのラベル位置を変更できます。before および after から選択できます。設定されていない場合、ラベルはラジオ ボタンの後に配置されます。

    <igx-radio [(ngModel)]="selected" value="option1" labelPosition="before">Option 1</igx-radio>
    <igx-radio [(ngModel)]="selected" value="option2" labelPosition="before">Option 2</igx-radio>
    

    プロパティ

    上記のサンプルに 4 つのラジオ ボタンを追加し、各ボタンに特定の背景色を適用します。次に含まれる div 要素の backgroundColor プロパティをコンポーネントの selectedColor プロパティにバインドします。selectedColor は NgModel ディレクティブによって双方向バインディングが設定されるため、ユーザーが別のラジオ ボタン (色) を選択する際に値が更新されます。

    // radiogroup.component.ts
    ...
    public colors = [{
        hex: '#f06a2f',
        name: 'Carrot'
    }, {
        hex: '#ff134a',
        name: 'Watermelon'
    }, {
        hex: '#7bc96f',
        name: 'Grass'
    },
    {
        hex: 'transparent',
        name: 'No color'
    }];
    
    public selectedColor: string = this.colors[3].hex;
    
    <!--radiogroup.component.html-->
    <igx-radio *ngFor="let color of colors" 
               name="color" 
               [value]="color.hex" 
               [(ngModel)]="selectedColor">
               {{color.name}}
    </igx-radio>
    
    <div [style.background-color]="selectedColor">
        ...
    </div>
    

    双方向バインディングで NgModel ディレクティブを使用しない場合、FormsModule をインポートし、NgModule の imports リストに追加する必要があります。

    結果は以下のようになります。

    スタイル設定

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

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

    最も簡単な方法は、radio-theme を拡張する新しいテーマを作成し、デフォルト テーマのいくつかのパラメーターを受け取る方法です。

    $custom-radio-theme: radio-theme(
        $disabled-color: lightgray,
        $empty-color:  #345779,
        $fill-color: #2dabe8,
        $fill-color-hover: #2dabe8,
        $fill-hover-border-color: #2dabe8
    );
    

    CSS 変数の使用

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

    @include css-vars($custom-radio-theme);
    

    テーマ オーバーライドの使用

    Internet Explorer 11 などの古いブラウザーのコンポーネントをスタイル設定するには、CSS 変数をサポートしていないため、別のアプローチを用いる必要があります。

    コンポーネントが Emulated ViewEncapsulation を使用している場合、::ng-deep を使用してこのカプセル化を解除する必要があります。カスタム テーマが他のコンポーネントに影響しないようにするには、::ng-deep の前に :host セレクターを含めるようにしてください。

    :host {
         ::ng-deep {
            @include radio($custom-radio-theme);
        }
    }
    

    Radio Group

    Ignite UI for Angular Radio Group ディレクティブは、ラジオの子コンポーネントを制御できるグループ化コンテナーを提供し、テンプレート駆動型およびリアクティブ型のフォームをサポートします。

    デモ

    使用方法

    Radio Group ディレクティブが NgModule としてエクスポートされるため、アプリケーションで app.module.ts ファイルの IgxRadioModule をインポートする必要があります。

    // app.module.ts
    ...
    import { IgxRadioModule } from 'igniteui-angular';
    // import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxRadioModule],
        ...
    })
    

    まず、igxRadioGroup を作成し、いくつかの igxRadio コンポーネントを追加します。

    ラジオ グループの name プロパティの設定は必須であることに注意してください。

    <!--radio-group.component.html-->
    <igx-radio-group name="fruitsRadioGroup">
        <igx-radio *ngFor="let fruit of fruits" value="{{fruit}}">
            {{fruit}}
        </igx-radio>
    </igx-radio-group>
    
    // radio-group.component.ts
    public fruits = ["Apple", "Mango", "Banana", "Orange"];
    

    配置

    alignment 入力プロパティを使用して、ラジオ グループ内の igxRadio コンポーネントの方向を変更します。horizontal および vertical から選択できます。ラジオ グループのデフォルト配置は horizontal (水平) です。

    //sample.component.ts
    import { RadioGroupAlignment } from "igniteui-angular";
    ...
    public alignment = RadioGroupAlignment.vertical;
    ...
    
    <!-- sample.component.html -->
    <igx-radio-group [alignment]="alignment">
        <igx-radio [(ngModel)]="selected" value="London">London</igx-radio>
        <igx-radio [(ngModel)]="selected" value="New York">New York</igx-radio>
        <igx-radio [(ngModel)]="selected" value="Tokyo">Tokyo</igx-radio>
        <igx-radio [(ngModel)]="selected" value="Sofia">Sofia</igx-radio>
    </igx-radio-group>
    

    API リファレンス

    テーマの依存関係

    その他のリソース

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