日期也是常用的表單需求,而引用 MatDatepickerModule
模組後就可以使用 Material 的日期選擇器。不過因為此與日期相關,會有一些日期的處理,所以也需要在 app.config
中設定 provideNativeDateAdapter
提供者。
<mat-form-field>
<mat-label>開始日期</mat-label>
<input matInput [matDatepicker]="picker" />
<mat-datepicker-toggle matIconSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
預設狀態下會使用英文為 Datepicker 的語系,若想要變更其語系則可以設定 MAT_DATE_LOCALE
提供者令牌。
{ provide: MAT_DATE_LOCALE, useValue: 'zh-tw' }
除了單一日期的選擇,Material 也提供了日期區間的選擇元件。
<mat-form-field>
<mat-label>處理日期</mat-label>
<mat-date-range-input
formGroupName="dateRange"
[rangePicker]="dateRangePicker"
[comparisonStart]="start.value"
[comparisonEnd]="end.value"
>
<input matStartDate placeholder="起始日期" formControlName="start" />
<input matEndDate placeholder="結束日期" formControlName="end" />
</mat-date-range-input>
<mat-datepicker-toggle
matIconSuffix
[for]="dateRangePicker"
></mat-datepicker-toggle>
<mat-date-range-picker #dateRangePicker></mat-date-range-picker>
</mat-form-field>
如上面程式所示,我們可以透過 <mat-range-input>
標籤定義一個日期期間選擇的輸入項,其內會的兩個 input
元件分別加入 matStartDate
與 matEndDate
來設定起迄日期。進一步,我們可以實作 MatDateRangeSelectionStrategy
介面,並抽換 MAT_DATE_RANGE_SELECTION_STRATEGY
令牌,來自行定義日期區間選擇的策略。
export class WorkDateRangeSelectionStrategy<D> implements MatDateRangeSelectionStrategy<D>
{
...
}
{
provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
useClass: WorkDateRangeSelectionStrategy,
}
明天我們來使用 Angular Material 所提供其他的元件,如 Snack Bar 等。