@_mehrad/ngx-daterangepicker-material 中文文档教程

发布于 4年前 浏览 29 项目主页 更新于 3年前

ngx-daterangepicker-material

Angular 2+ 日期范围选择器。

构建状态npm 版本last commit

这个 Angular Material 插件与 Angular 2+ 兼容并且与 Ivy 兼容。 它利用 moment.js 来处理日期操作和解析。 这个插件的基础最初是 Bootstrap Date Range Picker,但它对 jQuery 和 Bootstrap 的依赖被删除了。 Angular Material 主题自 v3.0.0 起得到完全支持,因此您只需将此组件放入现有的 Material 项目中,它就会直接融入您的应用程序。

演示:https


Versions

Angularngx-daterangepicker-material
>=9.0.0v4.x.x
<9.0.0v2.x.x
~~>=9.0.0 depends on @angular/material~~~~v3.x~~

Installation

://fetrarij.github.io/ngx-daterangepicker-material/从 npm 安装插件:

npm install ngx-daterangepicker-material --保存。

在您的模块中导入 NgxDaterangepickerMd

...
import { FormsModule } from '@angular/forms';
import { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
import { App } from './app';

@NgModule({
    imports: [
        ... ,
        FormsModule,
        NgxDaterangepickerMd.forRoot()
    ],
    declarations: [App],
    bootstrap:    [App]
})
export class AppModule {}

Usage example

Html:

<input type="text" ngxDaterangepickerMd [(ngModel)]="selected" class="form-control"/>

Typescript:

selected: {startDate: Moment, endDate: Moment};

with some options:

Html:

<input type="text" matInput
    ngxDaterangepickerMd
    [locale]="{applyLabel: 'ok', format: 'DD-MM-YYYY'}"
    startKey="start"
    endKey="end"
    [(ngModel)]="selected"
    name="daterange"/>

Typescript:

selected: {start: Moment, end: Moment};

您可以玩我们的在线此处演示在这里浏览我们的演示代码

Inline usage

您可以直接在模板中使用该组件,这会将其 inline 模式设置为 true,在这种情况下,日历不会在选择日期/范围后隐藏。 然后,您可以使用事件:rangeClickeddatesUpdatedchoosedDate 来获取其选择状态。

<ngx-daterangepicker-material (choosedDate)="choosedDate($event)">
</ngx-daterangepicker-material>

Available options

autoApply, showDropdowns, singleDatePicker, showWeekNumbers, showISOWeekNumbers, alwaysShowCalendars, showClearButton, showCancel

这些选项是布尔值

isCustomDate

(函数)一个函数,它在显示日历之前传递日历中的每个日期,并且可以返回一个字符串或 CSS 类名称数组以应用于该日期的日历单元格

isInvalidDate

(函数)一个传递每个日期的函数在显示之前在两个日历中显示,并可能返回 true 或 false 以指示该日期是否可供选择。

isTooltipDate

(函数)在显示两个日历之前传递每个日期的函数,并且可以返回要显示为工具提示的文本。

minDate, maxDate

要设置最小和最大日期,这些选项可以是时刻日期或 ISO 格式的字符串

dateLimit

来设置我们可以选择

locale

语言环境选项的最大日期数是一个对象,其中包含:

{
    format: 'MM/DD/YYYY', // could be 'YYYY-MM-DDTHH:mm:ss.SSSSZ'
    displayFormat: 'MM/DD/YYYY', // default is format value
    direction: 'ltr', // could be rtl
    weekLabel: 'W',
    separator: ' To ', // default is ' - '
    cancelLabel: 'Cancel', // detault is 'Cancel'
    applyLabel: 'Okay', // detault is 'Apply'
    clearLabel: 'Clear', // detault is 'Clear'
    customRangeLabel: 'Custom range',
    daysOfWeek: moment.weekdaysMin(),
    monthNames: moment.monthsShort(),
    firstDay: 1 // first day is monday
}

Check here 用于设置全局语言环境

startKey and endKey

Theses 2 options are for the key you want for the value , 默认是 startDateendDate,这意味着我们从 ngModel 得到的值默认是:{startDate: Date, endDate: Date}

指定 startKeyendKey 会有不同的模型:

例如:

<input type="text" ngxDaterangepickerMd startKey="start" endKey="end" [(ngModel)]="model">

我们得到的模型是:{start: Date, end: Date}

ranges

(object ) 设置用户可以从中选择的预定义日期范围。 每个键都是范围的标签,它的值是一个数组,其中有两个日期表示范围的边界。 例如:

<input type="text" ngxDaterangepickerMd startKey="start" endKey="end" [ranges]="ranges" [(ngModel)]="model">
ranges: any = {
    'Today': [moment(), moment()],
    'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
    'Last 7 Days': [moment().subtract(6, 'days'), moment()],
    'Last 30 Days': [moment().subtract(29, 'days'), moment()],
    'This Month': [moment().startOf('month'), moment().endOf('month')],
    'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
  }

Other options with ranges

您可以在使用范围时使用波纹管选项。 默认值为 false

AttributTypeDescription
alwaysShowCalendarsbooleanset to true if you want to display the ranges with the calendar
keepCalendarOpeningWithRangebooleanset to true if you want the calendar won't be closed after choosing a range
showRangeLabelOnInputbooleanset to true if you want to display the range label on input
customRangeDirectionbooleanset to true if you want to allow selection range from end date first
lockStartDatebooleanset to true if you want to lock start date and change only the end date

Open datepicker from outside

可以从外部打开日期选择器。 您应该创建一个带有附加日期选择器指令的输入和一个带有“ngx-daterangepicker-action”类的按钮(以防止触发 clickOutside)。

    <input
      ngxDaterangepickerMd
      [closeOnAutoApply]="true"
      [autoApply]="true"
      [singleDatePicker]="true"
      [linkedCalendars]="true"
      [(ngModel)]="selected"
      (datesUpdated)="datesUpdated($event)"
      class="datepicker-calendar-icon">

    <a class="ngx-daterangepicker-action" (click)="openDatepicker()">
      Open
    </a>
  ...
    @ViewChild(DaterangepickerDirective, { static: false }) pickerDirective: DaterangepickerDirective;
  ...
  ...
  openDatepicker() {
    this.pickerDirective.open();
  }

Timepicker

如果要启用时间选择器,则必须将属性 timePicker 设置为 true

您可以使用这些选项:

AttributTypeDescription
timePicker24Hourbooleanset to true if you want to set the timepicker to 24h instead of having AM and PM
timePickerIncrementnumberset the value increment of the minutes (eg: for 12 there would be 0mn, 15mn, 30mn, 45mn,)
timePickerSecondsbooleanset true if you want do display second's select

Customisation

AttributTypeDescription
firstMonthDayClassstringadd a custom class for all first day of the month
lastMonthDayClassstringadd a custom class for all last day of the month
emptyWeekRowClassstringadd a custom class in a row with a date in a week not in the current month
emptyWeekColumnClassstringadd a custom class for all date in a week not in the current month
lastDayOfPreviousMonthClassstringadd a custom class for the last day of the previous month
firstDayOfNextMonthClassstringadd a custom class for the first day of the next month

Positioning

AttributPossible valuesDescription
opensleft, center, rightposition the calendar from the input element
dropsup, downposition the calendar to the up or down of the calendar

Available events

(rangeClicked)

单击范围时触发,并发送带有范围标签和日期值的对象,例如:{label: 'This Month', dates: [Moment, Moment]}

(datesUpdated)

当触发更新日期模型,例如应用(如果您激活了应用按钮),或者在没有应用按钮的情况下选择范围或日期,并发送包含开始和结束日期的对象,例如:{startDate: Moment, endDate: Moment}

Global locale

要设置全局语言环境,请将此对象传递给 NgxDaterangepickerMd.forRoot()。

例如:

@NgModule({
    imports: [
        ... ,
        FormsModule,
        NgxDaterangepickerMd.forRoot({
            separator: ' - ',
            applyLabel: 'Okay',
        })
    ],
    declarations: [App],
    bootstrap:    [App]
})

Development

Prepare your environment

安装本地依赖项:npm install

Development server

运行 npm start 以在端口 4200 上启动开发服务器。在

浏览器中打开 http//:localhost:4200

Tests

运行 npm testng test 来运行测试。

License

麻省理工学院

ngx-daterangepicker-material

Angular 2+ Date range picker.

Build Statusnpm versionlast commit

This Angular Material plugin is compatible with Angular 2+ and is Ivy compatible. It leverages moment.js to handle date manipulation and parsing. The base for this plugin was originally the Bootstrap Date Range Picker, but its dependencies on jQuery and Bootstrap were removed. Angular Material themes are fully supported since v3.0.0, so you can just drop this component into an existing Material project and it will blend right into your application.

Demo: https://fetrarij.github.io/ngx-daterangepicker-material/


Versions

Angularngx-daterangepicker-material
>=9.0.0v4.x.x
<9.0.0v2.x.x
~~>=9.0.0 depends on @angular/material~~~~v3.x~~

Installation

Install the plugin from npm:

npm install ngx-daterangepicker-material --save .

import NgxDaterangepickerMd in your module:

...
import { FormsModule } from '@angular/forms';
import { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
import { App } from './app';

@NgModule({
    imports: [
        ... ,
        FormsModule,
        NgxDaterangepickerMd.forRoot()
    ],
    declarations: [App],
    bootstrap:    [App]
})
export class AppModule {}

Usage example

Html:

<input type="text" ngxDaterangepickerMd [(ngModel)]="selected" class="form-control"/>

Typescript:

selected: {startDate: Moment, endDate: Moment};

with some options:

Html:

<input type="text" matInput
    ngxDaterangepickerMd
    [locale]="{applyLabel: 'ok', format: 'DD-MM-YYYY'}"
    startKey="start"
    endKey="end"
    [(ngModel)]="selected"
    name="daterange"/>

Typescript:

selected: {start: Moment, end: Moment};

You can play with our online demo here and browse our demo code here.

Inline usage

You can use the component directly in your templates, which will set its inline mode to true, in which case the calendar won't hide after date/range selection. You can then use the events: rangeClicked or datesUpdated or choosedDate to get its selection state.

<ngx-daterangepicker-material (choosedDate)="choosedDate($event)">
</ngx-daterangepicker-material>

Available options

autoApply, showDropdowns, singleDatePicker, showWeekNumbers, showISOWeekNumbers, alwaysShowCalendars, showClearButton, showCancel

These options are booleans

isCustomDate

(function) A function that is passed each date in the calendars before they are displayed, and may return a string or array of CSS class names to apply to that date's calendar cell

isInvalidDate

(function) A function that is passed each date in the two calendars before they are displayed, and may return true or false to indicate whether that date should be available for selection or not.

isTooltipDate

(function) A function that is passed each date in the two calendars before they are displayed, and may return a text to be displayed as a tooltip.

minDate, maxDate

To set the minimal and maximal date, these options are either a moment date or string in ISO format

dateLimit

To set max number of the date we can choose

locale

the locale options is an object with:

{
    format: 'MM/DD/YYYY', // could be 'YYYY-MM-DDTHH:mm:ss.SSSSZ'
    displayFormat: 'MM/DD/YYYY', // default is format value
    direction: 'ltr', // could be rtl
    weekLabel: 'W',
    separator: ' To ', // default is ' - '
    cancelLabel: 'Cancel', // detault is 'Cancel'
    applyLabel: 'Okay', // detault is 'Apply'
    clearLabel: 'Clear', // detault is 'Clear'
    customRangeLabel: 'Custom range',
    daysOfWeek: moment.weekdaysMin(),
    monthNames: moment.monthsShort(),
    firstDay: 1 // first day is monday
}

Check here for setting the global locale

startKey and endKey

Theses 2 options are for the key you want for the value, default are startDate and endDate, it means the value we have from ngModel are: {startDate: Date, endDate: Date} by default;

Specifiyng startKey and endKey would have different model:

example:

<input type="text" ngxDaterangepickerMd startKey="start" endKey="end" [(ngModel)]="model">

the model we got would be: {start: Date, end: Date}

ranges

(object) Set predefined date ranges the user can select from. Each key is the label for the range, and its value an array with two dates representing the bounds of the range. As an example:

<input type="text" ngxDaterangepickerMd startKey="start" endKey="end" [ranges]="ranges" [(ngModel)]="model">
ranges: any = {
    'Today': [moment(), moment()],
    'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
    'Last 7 Days': [moment().subtract(6, 'days'), moment()],
    'Last 30 Days': [moment().subtract(29, 'days'), moment()],
    'This Month': [moment().startOf('month'), moment().endOf('month')],
    'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
  }

Other options with ranges

You can use bellow options when using the ranges. The default are false.

AttributTypeDescription
alwaysShowCalendarsbooleanset to true if you want to display the ranges with the calendar
keepCalendarOpeningWithRangebooleanset to true if you want the calendar won't be closed after choosing a range
showRangeLabelOnInputbooleanset to true if you want to display the range label on input
customRangeDirectionbooleanset to true if you want to allow selection range from end date first
lockStartDatebooleanset to true if you want to lock start date and change only the end date

Open datepicker from outside

It is possible to open datepicker from outside. You should create an input with attached datepicker directive and a button with "ngx-daterangepicker-action" class (to prevent triggering of clickOutside).

    <input
      ngxDaterangepickerMd
      [closeOnAutoApply]="true"
      [autoApply]="true"
      [singleDatePicker]="true"
      [linkedCalendars]="true"
      [(ngModel)]="selected"
      (datesUpdated)="datesUpdated($event)"
      class="datepicker-calendar-icon">

    <a class="ngx-daterangepicker-action" (click)="openDatepicker()">
      Open
    </a>
  ...
    @ViewChild(DaterangepickerDirective, { static: false }) pickerDirective: DaterangepickerDirective;
  ...
  ...
  openDatepicker() {
    this.pickerDirective.open();
  }

Timepicker

You have to set the attribute timePicker to true if you want to enable the timepicker.

You can use theses options:

AttributTypeDescription
timePicker24Hourbooleanset to true if you want to set the timepicker to 24h instead of having AM and PM
timePickerIncrementnumberset the value increment of the minutes (eg: for 12 there would be 0mn, 15mn, 30mn, 45mn,)
timePickerSecondsbooleanset true if you want do display second's select

Customisation

AttributTypeDescription
firstMonthDayClassstringadd a custom class for all first day of the month
lastMonthDayClassstringadd a custom class for all last day of the month
emptyWeekRowClassstringadd a custom class in a row with a date in a week not in the current month
emptyWeekColumnClassstringadd a custom class for all date in a week not in the current month
lastDayOfPreviousMonthClassstringadd a custom class for the last day of the previous month
firstDayOfNextMonthClassstringadd a custom class for the first day of the next month

Positioning

AttributPossible valuesDescription
opensleft, center, rightposition the calendar from the input element
dropsup, downposition the calendar to the up or down of the calendar

Available events

(rangeClicked)

Fired when clicked on range, and send an object with range label and dates value, eg: {label: 'This Month', dates: [Moment, Moment]}

(datesUpdated)

Fires when the date model is updated, like applying (if you have activated the apply button), or when selecting a range or date without the apply button, and sends an object containing start and end dates, eg: {startDate: Moment, endDate: Moment}

Global locale

For setting the global locale, pass this object to NgxDaterangepickerMd.forRoot().

eg:

@NgModule({
    imports: [
        ... ,
        FormsModule,
        NgxDaterangepickerMd.forRoot({
            separator: ' - ',
            applyLabel: 'Okay',
        })
    ],
    declarations: [App],
    bootstrap:    [App]
})

Development

Prepare your environment

Install local dependencies: npm install.

Development server

Run npm start to start a development server on a port 4200.

Open http//:localhost:4200 on your browser.

Tests

Run npm test or ng test to run tests.

License

MIT

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文