Angular Button Group コンポーネントは、ボタンを水平/垂直配置、単一/複数選択、オン/オフ切り替えが可能なスタイルのボタン グループに組織するために使用します。
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 {
IgxButtonGroupModule,
IgxRippleModule,
IgxIconModule,
IgxButtonModule
} from "igniteui-angular";
import { ButtonGroupSample1Component } from "./button-group-sample-1/button-group-sample-1.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupSample1Component
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule,
IgxRippleModule,
IgxIconModule,
IgxButtonModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component } from '@angular/core';
@Component({
selector: 'app-button-group-sample-1',
styleUrls: ['./button-group-sample-1.component.scss'],
templateUrl: './button-group-sample-1.component.html'
})
export class ButtonGroupSample1Component {
public rippleColor = 'grey';
}
ts
<article class="sample-column">
<igx-buttongroup>
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_align_left</igx-icon>
</button>
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_align_center</igx-icon>
</button>
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_align_right</igx-icon>
</button>
<button igxButton [igxRipple]="rippleColor" [selected]="true">
<igx-icon>format_align_justify</igx-icon>
</button>
</igx-buttongroup>
</article>
html
igx-buttongroup{
display: inline-block;
max-width: 400px;
}
scss
このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
Ignite UI for Angular Button Group コンポーネントを使用した作業を開始するには、Ignite UI for Angular をインストールする必要があります。既存の Angular アプリケーションで、以下のコマンドを入力します。
ng add igniteui-angular
cmd
Ignite UI for Angular については、「はじめに」トピックをご覧ください。
次に、app.module.ts ファイルに IgxButtonGroupModule
をインポートします。
...
import { IgxButtonGroupModule } from 'igniteui-angular';
@NgModule({
...
imports: [..., IgxButtonGroupModule],
...
})
export class AppModule {}
typescript
あるいは、16.0.0
以降、IgxButtonGroupComponent
をスタンドアロンの依存関係としてインポートすることも、IGX_BUTTON_GROUP_DIRECTIVES
トークンを使用してコンポーネントとそのすべてのサポート コンポーネントおよびディレクティブをインポートすることもできます。
...
import { IGX_BUTTON_GROUP_DIRECTIVES, IgxIconComponent } from 'igniteui-angular';
@Component({
selector: 'app-home',
template: `
<igx-buttongroup>
<button igxButton>
<igx-icon>format_align_left</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_center</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_right</igx-icon>
</button>
<button igxButton selected>
<igx-icon>format_align_justify</igx-icon>
</button>
</igx-buttongroup>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IGX_BUTTON_GROUP_DIRECTIVES, IgxIconComponent]
})
export class HomeComponent {}
typescript
Ignite UI for Angular Button Group モジュールまたはディレクティブをインポートしたので、igx-buttongroup
とそのボタンの基本構成を開始できます。
ボタン グループの追加
igx-buttongroup
セレクターを使用してボタンをラップし、ボタン グループに表示します。デフォルトでボタンを選択したい場合、selected
プロパティを使用します。
<igx-buttongroup>
<button igxButton>
<igx-icon>format_align_left</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_center</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_right</igx-icon>
</button>
<button igxButton selected>
<igx-icon>format_align_justify</igx-icon>
</button>
</igx-buttongroup>
html
例
配置
alignment
プロパティを使用して、ボタン グループ内のボタンの方向を設定します。
import { ButtonGroupAlignment } from 'igniteui-angular';
...
public alignment = ButtonGroupAlignment.vertical;
...
typescript
<igx-buttongroup [alignment]="alignment">
<button igxButton>Sofia</button>
<button igxButton>London</button>
<button igxButton selected>New York</button>
<button igxButton>Tokyo</button>
</igx-buttongroup>
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 {
IgxButtonGroupModule,
IgxButtonModule,
IgxRippleModule
} from "igniteui-angular";
import { ButtonGroupSample2Component } from "./button-group-sample-2/button-group-sample-2.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupSample2Component
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule,
IgxButtonModule,
IgxRippleModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component } from '@angular/core';
import { ButtonGroupAlignment } from 'igniteui-angular';
@Component({
selector: 'app-button-group-sample-2',
styleUrls: ['./button-group-sample-2.component.scss'],
templateUrl: './button-group-sample-2.component.html'
})
export class ButtonGroupSample2Component {
public alignment = ButtonGroupAlignment.vertical;
public rippleColor = 'grey';
}
ts
<article class="sample-column">
<igx-buttongroup [alignment]="alignment">
<button igxButton [igxRipple]="rippleColor">Sofia</button>
<button igxButton [igxRipple]="rippleColor">London</button>
<button igxButton [selected]="true" [igxRipple]="rippleColor">New York</button>
<button igxButton [igxRipple]="rippleColor">Tokyo</button>
</igx-buttongroup>
</article>
html
igx-buttongroup{
display: inline-block;
width: 200px;
}
scss
選択
igx-buttongroup
選択を構成するには、その selectionMode プロパティを使用できます。このプロパティは、次の 3 つのモードを受け入れます:
- single - ボタン グループのデフォルトの選択モードです。ユーザーは単一のボタンを選択/選択解除できます。
- singleRequired - ラジオ グループの動作を模倣します。選択できるボタンは 1 つだけであり、最初に選択すると、ユーザーの操作を通じて選択を解除することはできません。
- multi - グループ内の複数のボタンを選択または選択解除できます。
以下のサンプルは、公開された igx-buttongroup
選択モードを示しています。
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 {
IgxButtonGroupModule,
IgxIconModule,
IgxButtonModule,
IgxRippleModule
} from "igniteui-angular";
import { ButtonGroupSampleComponent } from "./button-group-sample-4/button-group-sample.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupSampleComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule,
IgxIconModule,
IgxButtonModule,
IgxRippleModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component } from '@angular/core';
@Component({
selector: 'app-button-group-sample',
styleUrls: ['./button-group-sample.component.scss'],
templateUrl: './button-group-sample.component.html'
})
export class ButtonGroupSampleComponent {
public rippleColor = 'grey';
}
ts
<article class="sample-column">
<igx-buttongroup [multiSelection]="true">
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_bold</igx-icon>
</button>
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_italic</igx-icon>
</button>
<button igxButton [igxRipple]="rippleColor">
<igx-icon>format_underlined</igx-icon>
</button>
</igx-buttongroup>
</article>
html
igx-buttongroup{
display: inline-block;
width: 200px;
}
scss
サイズ
--ig-size
CSS カスタム プロパティを使用して、ボタン グループのサイズを制御できます。
igx-buttongroup {
--ig-size: var(--ig-size-small);
}
scss
<igx-buttongroup></igx-buttongroup>
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 { IgxButtonGroupModule } from "igniteui-angular";
import { ButtonGroupSample5Component } from "./button-group-sample-5/button-group-sample-5.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupSample5Component
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component, OnInit } from '@angular/core';
import { DisplayDensity } from 'igniteui-angular';
@Component({
selector: 'app-button-group-sample-5',
styleUrls: ['./button-group-sample-5.component.scss'],
templateUrl: './button-group-sample-5.component.html'
})
export class ButtonGroupSample5Component implements OnInit {
public rippleColor = 'grey';
public displayDensity: DisplayDensity = 'comfortable';
public displayDensities;
public ngOnInit() {
this.displayDensities = [
{ label: 'compact', selected: this.displayDensity === 'compact', togglable: true },
{ label: 'cosy', selected: this.displayDensity === 'cosy', togglable: true },
{ label: 'comfortable', selected: this.displayDensity === 'comfortable', togglable: true }
];
}
public selectDensity(event) {
this.displayDensity = this.displayDensities[event.index].label;
}
}
ts
<article class="sample-column">
<igx-buttongroup [values]="displayDensities"
(selected)="selectDensity($event)"
[displayDensity]="displayDensity">
</igx-buttongroup>
</article>
html
igx-buttongroup{
display: inline-block;
}
scss
カスタム トグル ボタン
values
プロパティを使用して、ボタン グループ内のカスタムボタンの配列を設定します。
interface IButton {
ripple?: string;
label?: string;
disabled?: boolean;
togglable?: boolean;
selected?: boolean;
color?: string;
icon?: string;
}
class ToggleButton {
private ripple: string;
private label: string;
private disabled: boolean;
private togglable: boolean;
private selected: boolean;
private color: string;
private icon: string;
constructor(obj?: IButton) {
this.ripple = obj.ripple || 'gray';
this.label = obj.label;
this.selected = obj.selected || false;
this.togglable = obj.togglable || true;
this.disabled = obj.disabled || false;
this.color = obj.color;
this.icon = obj.icon;
}
}
...
public bordersButtons: ToggleButton[];
public ngOnInit() {
this.bordersButtons = [
new ToggleButton({
icon: 'border_top',
selected: true
}),
new ToggleButton({
icon: 'border_right',
selected: false
}),
new ToggleButton({
icon: 'border_bottom',
selected: false
}),
new ToggleButton({
icon: 'border_left',
selected: false
})
];
}
...
typescript
<igx-buttongroup [selectionMode]="'multi'" [values]="bordersButtons"></igx-buttongroup>
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 { IgxButtonGroupModule } from "igniteui-angular";
import { ButtonGroupSample3Component } from "./button-group-sample-3/button-group-sample-3.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupSample3Component
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component, OnInit } from '@angular/core';
interface IButton {
ripple?: string;
label?: string;
disabled?: boolean;
togglable?: boolean;
selected?: boolean;
color?: string;
icon?: string;
}
class ToggleButton {
private ripple: string;
private label: string;
private disabled: boolean;
private togglable: boolean;
private selected: boolean;
private color: string;
private icon: string;
constructor(obj?: IButton) {
this.ripple = obj.ripple || 'gray';
this.label = obj.label;
this.selected = obj.selected || false;
this.togglable = obj.togglable || true;
this.disabled = obj.disabled || false;
this.color = obj.color;
this.icon = obj.icon;
}
}
@Component({
selector: 'app-button-group-sample-3',
styleUrls: ['./button-group-sample-3.component.scss'],
templateUrl: './button-group-sample-3.component.html'
})
export class ButtonGroupSample3Component implements OnInit {
public bordersButtons: ToggleButton[];
public ngOnInit() {
this.bordersButtons = [
new ToggleButton({
icon: 'border_top',
selected: true
}),
new ToggleButton({
icon: 'border_right',
selected: false
}),
new ToggleButton({
icon: 'border_bottom',
selected: false
}),
new ToggleButton({
icon: 'border_left',
selected: false
})
];
}
}
ts
<article class="sample-column">
<igx-buttongroup [multiSelection]="true" [values]="bordersButtons"></igx-buttongroup>
</article>
html
igx-buttongroup {
display: inline-block;
width: 300px;
}
scss

スタイル設定
ボタン グループ のスタイル設定は、すべてのテーマ関数とコンポーネント ミックスインが存在する index
ファイルをインポートする必要があります。
@use "igniteui-angular/theming" as *;
scss
最も簡単な方法は、button-group-theme
を拡張し、さまざまな状態のボタン グループの項目をスタイルするパラメーターを受け取る新しいテーマを作成する方法です。
$custom-button-group: button-group-theme(
$item-text-color: #fdfdfd,
$item-background: #2f4d6a,
$item-hover-text-color: #fdfdfd,
$item-hover-background: #1f3347,
$item-selected-text-color: #fdfdfd,
$item-selected-background: #1f3347,
$item-selected-hover-background: #1f3347,
$disabled-text-color: gray,
$disabled-background-color: lightgray,
);
scss
ご覧のとおり、button-group-theme
は、項目の基本的なスタイル設定に役立ついくつかのパラメーターを公開しています。ボタン固有のパラメーターを変更する場合は、button-theme
を拡張する新しいテーマを作成し、それぞれのボタン グループのクラスの下でスコープできます。
最後にコンポーネントのテーマを含めます。
@include css-vars($custom-button-group);
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 {
IgxButtonGroupModule,
IgxRippleModule,
IgxIconModule,
IgxButtonModule
} from "igniteui-angular";
import { ButtonGroupStyleComponent } from "./button-group-style/button-group-style.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
ButtonGroupStyleComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonGroupModule,
IgxRippleModule,
IgxIconModule,
IgxButtonModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component } from '@angular/core';
import { ButtonGroupAlignment } from 'igniteui-angular';
@Component({
selector: 'app-button-group-style',
styleUrls: ['./button-group-style.component.scss'],
templateUrl: './button-group-style.component.html'
})
export class ButtonGroupStyleComponent {
public alignment = ButtonGroupAlignment.vertical;
}
ts
<article class="sample-column">
<igx-buttongroup [alignment]="alignment">
<button igxButton igxRipple="white">Sofia</button>
<button igxButton igxRipple="white">London</button>
<button igxButton igxRipple="white">New York</button>
<button igxButton igxRipple="white" [disabled]="true">Tokyo</button>
</igx-buttongroup>
</article>
html
@use '../../variables' as *;
igx-buttongroup{
display: inline-block;
width: 200px;
}
$custom-button-group: button-group-theme(
$item-text-color: #fdfdfd,
$item-background: #2f4d6a,
$item-hover-text-color: #fdfdfd,
$item-hover-background: #1f3347,
$item-selected-text-color: #fdfdfd,
$item-selected-background: #1f3347,
$item-selected-hover-background: #1f3347,
$disabled-text-color: gray,
$disabled-background-color: lightgray
);
:host ::ng-deep {
@include css-vars($custom-button-group);
}
scss
API リファレンス
テーマの依存関係
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。