Angular Date Picker (日付ピッカー) コンポーネントの概要

    Angular Date Picker は、手動でテキストを入力して日付を入力するか、ポップアップするカレンダー ダイアログから日付値を選択するために使用される機能豊富なコンポーネントです。軽量で使いやすい Angular の Date Picker を使用すると、ユーザーは、月、年、10 年の複数の表示オプションを使用して目的の日付に移動できます。検証を追加するための通常の min、max、および required プロパティがあります。

    Ignite UI for Angular Date Picker コンポーネントを使用すると、ユーザーは月表示のカレンダード ロップダウンまたは編集可能な入力フィールドから単一の日付を選択できます。Angular Date Picker は、カレンダーからのみ選択するための dialog モード、ロケール対応でカスタマイズ可能な日付の書式設定と検証の統合もサポートしています。

    Angular Date Picker の例

    以下は、ユーザーが手動のテキスト入力で日付を選択し、左側のカレンダー アイコンをクリックしてナビゲートできるようになったときに、Angular Date Picker がどのように機能するかを示すサンプルです。描画する方法は以下のとおりです。

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。

    Ignite UI for Angular Date Picker を使用した作業の開始

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

    ng add igniteui-angular
    cmd

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

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

    ピッカーが IgxCalendarComponent を使用し、タッチ操作のために BrowserAnimationsModuleHammerModule (オプション) に依存関係があり、これらもモジュールに追加する必要があります。

    import { HammerModule } from '@angular/platform-browser';
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    import { IgxDatePickerModule } from 'igniteui-angular';
    // import { IgxDatePickerModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxDatePickerModule, BrowserAnimationsModule, HammerModule],
        ...
    })
    export class AppModule {}
    typescript

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

    // home.component.ts
    
    import { HammerModule } from '@angular/platform-browser';
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    import { IGX_DATE_PICKER_DIRECTIVES } from 'igniteui-angular';
    // import { IGX_DATE_PICKER_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: `
        <igx-date-picker>
            <label igxLabel>Date</label>
        </igx-date-picker>
        `,
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [BrowserAnimationsModule, HammerModule, IGX_DATE_PICKER_DIRECTIVES]
        /* or imports: [BrowserAnimationsModule, HammerModule, IgxDatePickerComponent, IgxLabelDirective] */
    })
    export class HomeComponent {}
    typescript

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

    Angular Date Picker コンポーネントの使用

    Date Picker の表示

    デフォルトの dropdown 状態の Date Picker をインスタンス化するには、以下のコードを使用してください。

    <igx-date-picker>
        <label igxLabel>Date</label>
    </igx-date-picker>
    html

    オプション

    IgxDatePickerComponentdate または string にバインドできます。

    <igx-date-picker [value]="date"></igx-date-picker>
    html
    public date = new Date(2000, 0, 1);
    typescript

    文字列がピッカーにバインドされている場合は、ISO 8601 形式の日付のみの文字列である必要があります。

    <igx-date-picker [value]="'2000-01-01'"></igx-date-picker>
    html

    これについての詳細は、DateTime Editor の ISO セクションにあります。

    ngModel を介して双方向バインディングが可能です:

    <igx-date-picker [(ngModel)]="date"></igx-date-picker>
    html

    value 入力を介しても可能です:

    <igx-date-picker [(value)]="date"></igx-date-picker>
    html

    さらに、formControlName をピッカーに設定して、リアクティブ フォームで使用することができます:

    <form [formGroup]="form">
        <igx-date-picker formControlName="datePicker"></igx-date-picker>
    </form>
    html
    export class SampleFormComponent {
        // ...
        public form: FormGroup;
        constructor(private fb: FormBuilder) {
            this.form = this.fb.group({
                datePicker: ['', Validators.required]
            });
        }
    }
    typescript

    ピッカーは常に Date 値を返します。これは、モデルにバインドされている場合、または文字列変数への双方向バインドの場合、新しい日付が選択された後、タイプが Date になることを意味します。

    コンポーネントの投影

    IgxDatePickerComponent は、IgxInput を除く IgxInputGroupComponent がサポートする子コンポーネントの投影を許可します。それは、igxLabeligx-hint / IgxHintigx-prefix / igxPrefixigx-suffix / igxSuffix です。詳細については、Label および Input トピックを参照してください。

    <igx-date-picker #datePicker>
        <igx-icon igxSuffix (click)="datePicker.open()">keyboard_arrow_down</igx-icon>
    </igx-date-picker>
    html

    上記のスニペットでは、​​入力の最後、デフォルトのクリア アイコンの直後に追加のトグル アイコンが追加されます。プレフィックスとサフィックスを次々に積み重ねることができるため、これによってデフォルトのトグル アイコンが削除されることはありません。

    トグル アイコンとクリア アイコンのカスタマイズ

    IgxDatePickerComponentIgxPickerToggleComponentIgxPickerClearComponent で構成できます。これらを使用すると、独自のクリック ハンドラーを追加しなくても、トグル アイコンとクリア アイコンを変更できます。

     <igx-date-picker>
        <label igxLabel>Select a Date</label>
        <igx-picker-toggle igxPrefix>
            <igx-icon>calendar_view_day</igx-icon>
        </igx-picker-toggle>
        <igx-picker-clear igxSuffix>
            <igx-icon>delete</igx-icon>
        </igx-picker-clear>
    </igx-date-picker>
    html

    カスタム動作ボタン

    ピッカーのアクション ボタンは、次の 2 つの方法で変更できます:

    <igx-date-picker [todayButtonLabel]="'今日'" [cancelButtonLabel]="'キャンセル'"></igx-date-picker>
    html
    • ボタン全体は、igxPickerActions ディレクティブを使用してテンプレート化できます。これを使用すると、日付ピッカーの calendar とそのすべてのメンバーにアクセスできます。
    <igx-date-picker>
        <ng-template igxPickerActions let-calendar>
            <button igxButton="flat" (click)="calendar.viewDate = today">Today</button>
        </ng-template>
    </igx-date-picker>
    html

    キーボード ナビゲーション

    キーボードを使用して IgxDatePickerComponent のカレンダー UI を開いたり閉じたりすることは、dropdown モードでのみ使用でき、以下のキーの組み合わせを介してトリガーできます。

    キー 説明
    Space カレンダーのポップアップを表示し、フォーカスを合わせます。
    Alt + カレンダーのポップアップを表示し、フォーカスを合わせます。
    Esc カレンダーのポップアップを閉じて、入力フィールドにフォーカを合わせます。
    Enter カレンダーのポップアップを閉じ、フォーカスされた日付を選択して、フォーカスを入力フィールドに移動します。
    Alt + カレンダーのポップアップを閉じて、入力フィールドにフォーカを合わせます。

    IgxDatePickerComponentIgxDateTimeEditorDirective を使用するため、キーボード ナビゲーションを継承します。

    コード例

    ダイアログ モード

    IgxDatePickerComponent は、dialog モードもサポートしています:

    <igx-date-picker [mode]="'dialog'"></igx-date-picker>
    html

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    表示および入力形式

    inputFormat および displayFormat は、ピッカーのエディターが指定された形式に従うように設定できるプロパティです。inputFormat プロパティは、ピッカーが dropdown モードのときに使用され、入力の編集可能なマスクとそのプレースホルダー (何も設定されていない場合) を管理します。さらに、inputFormat はロケール ベースであるため、何も指定されていない場合、ピッカーはデフォルトでブラウザーで使用されるものになります。

    注意すべき点は、Ignite UI の Angular Date Picker Component が datemonth の部分がない形式で提供された場合、それらの部分に常に先行ゼロを追加することです。例えば、d/M/yydd/MM/yy になります。これは編集中にのみ適用されます。

    一方、displayFormat は Angular の DatePipe を使用し、フォーカスされていないときにピッカーの入力を書式設定するために使用されます。displayFormat が指定されていない場合、ピッカーは inputFormatdisplayFormat として使用します。 あるいは、inputFormat プロパティが設定されていない場合、入力形式は displayFormat から数値の日付と時刻の部分のみを含む形式として解析できる場合に推測されます。

    これらの詳細については、IgxDateTimeEditor の例のセクションを参照してください。

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    IgxDatePicker が IME 入力をサポートするようになりました。合成が終了すると、コントロールはワイド文字の数字を ASCII 文字に変換します。

    増加および減少

    IgxDatePickerComponent は、increment メソッドと decrement メソッドを公開します。どちらも IgxDateTimeEditorDirective から取得され、現在設定されている日付の特定の DatePart を増加および減少するために使用できます。

    <igx-date-picker #datePicker>
        <igx-icon igxPrefix (click)="datePicker.increment(DatePart.Month, 3)">keyboard_arrow_up</igx-icon>
        <igx-icon igxPrefix (click)="datePicker.decrement(DatePart.Year. 4)">keyboard_arrow_down</igx-icon>
    </igx-date-picker>
    html

    また、spinDelta 入力プロパティとして、現在設定されている日付の特定の日付部分を増加または減少するために使用できます。

    <igx-date-picker [spinDelta]="{date: 2, month: 3, year: 4}"></igx-date-picker>
    html

    Angular Forms で

    IgxDatePickerComponent は、コア FormsModuleNgModel、および ReactiveFormsModule (FormControlFormGroup など) からのすべてのディレクティブをサポートします。これには、フォーム バリデータ機能も含まれます。さらに、コンポーネントの minValue プロパティと maxValue プロパティはフォーム バリデータとして機能します。

    リアクティブ フォームの統合トピックにアクセスすると、IgxDatePickerComponent をリアクティブ フォームで確認できます。

    日付ピッカーとタイム ピッカーを併用する

    IgxDatePicker と IgxTimePicker を一緒に使用する場合、それらを 1 つの同じ Date オブジェクト値にバインドする必要がある場合があります。

    テンプレート駆動フォームでこれを実現するには、ngModel を使用して両方のコンポーネントを同じ Date オブジェクトにバインドします。

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    リアクティブ フォームでは、各コンポーネントの valueChange イベントを処理し、他のコンポーネントの値を更新できます。

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    カレンダー固有の設定

    IgxDatePickerComponentIgxCalendarComponent を使用し、日付ピッカーが公開するプロパティを介してその設定の一部を変更できます。これらの一部には、ピッカーが展開されたときに複数のカレンダーを表示できる displayMonthsCount、週の開始日を決定する weekStart、年の各週の番号を表示する showWeekNumbers などが含まれます。

    App Builder | CTA Banner

    インターナショナリゼーション

    IgxDatePickerComponent のローカライズは、locale 入力で制御できます。さらに、IgxCalendarComponent によって提供される igxCalendarHeaderigxCalendarSubheader テンプレートを使用して、ヘッダーとサブヘッダーの外観を指定できます。このテンプレートを使用する方法の詳細については、IgxCalendarComponent トピックを参照してください。

    以下は日本ロケール定義を持つ Angular Date Picker です。

    <igx-date-picker locale="ja-JP" [value]="date">
      <ng-template igxCalendarHeader let-format>
        {{ format.month.combined | titlecase }}{{format.day.combined }}{{ format.weekday.combined }}
      </ng-template>
      <ng-template igxCalendarSubheader let-format>
        <span (click)="format.yearView()">{{ format.year.combined }}</span>
        <span (click)="format.monthView()">{{ format.month.combined | titlecase }}</span>
      </ng-template>
    </igx-date-picker>
    html

    スタイル設定

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

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

    Angular Date Picker はカレンダーのテーマを使用するため、calendar-theme を拡張する新しいテーマを作成し、そのパラメーターを使用して日付ピッカーの項目をスタイル設定します。

    $custom-datepicker-theme: calendar-theme(
      $header-background: #345779,
      $content-background: #fdfdfd,
      $header-foreground: #ffffff,
      $date-current-foreground: #2dabe8,
      $navigation-color: #2dabe8,
      $date-selected-foreground: #fdfdfd,
      $date-current-background: #fdfdfd,
      $navigation-hover-color: #345779,
      $ym-current-foreground: #2dabe8,
      $ym-hover-foreground: #2dabe8,
      $picker-foreground: #2dabe8,
      $picker-hover-foreground: #345779,
    );
    scss

    最後に Angular Date Picker のカスタム テーマを設定します。

    @include css-vars($custom-datepicker-theme);
    scss

    コンポーネントが Emulated ViewEncapsulation を使用している場合、::ng-deep を使用してこのカプセル化を解除する必要があります。

    :host {
      ::ng-deep {
        @include css-vars($custom-datepicker-theme);
      }
    }
    scss

    EXAMPLE
    MODULES
    TS
    HTML
    SCSS

    API リファレンス

    テーマの依存関係

    その他のリソース

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