Calendar(日历)
日历是一个输入组件,可以选择日期,时间
使用说明
1. Import
import {Calendar} from 'primeng/primeng';
2. Getting Started
使用ngModel指令实现数据双向绑定
<p-calendar [(ngModel)]="dateValue"></p-calendar>
export class MyModel {
dateValue:string;
}
3.Model Driven Forms
日历组件也可以作用于模型驱动的表单(Model Driven Forms)
<p-calendar formControlName="date"></p-calendar>
4.Popup and Inline
日历组件默认以弹出形式展现,可以设置内联风格展示
<p-calendar [(ngModel)]="dateValue" [inline]="true"></p-calendar>
5.日期格式
默认格式为: mm/dd/yy, 通过dataFormat设置日期格式 格式公式)
<p-calendar [(ngModel)]="dateValue" dateFormat="dd.mm.yy"></p-calendar>
6.时间
通过设置timeOnly或者timeFormat属性来激活TimePicker 日期格式选项
<p-calendar [(ngModel)]="dateTimeValue" dateFormat="dd.mm.yy" timeFormat="HH:mm"></p-calendar>
7.展现效果
Calendar组件弹出可以设置多种效果,默认为fadeIn 其他效果有:sildeDown,silde,clip
<p-calendar [(ngModel)]="dateValue" showAnim="slideDown"></p-calendar>
8.日期限制
禁用手动输入日期,将readonlyInput设置为true,并且限制使用minDate和maxDate选项可选择的日期。minDate和maxDate允许值为类似dateFormat中的字符串或着类似"+ 1 m + 7 d"这种。
<p-calendar [(ngModel)]="dateValue" minDate="-1m" maxDate="+1m" [readonlyInput]="true">></p-calendar>
9.本地化
本地化为不同的语言和格式定义,设置区域属性。下面是西班牙的日历。
<p-calendar [(ngModel)]="dateValue" [locale]="es"></p-calendar>
export class MyModel {
es: any;
ngOnInit() {
this.es = {
//date
closeText: "Cerrar",
prevText: "<Ant",
nextText: "Sig>",
currentText: "Hoy",
monthNames: [ "enero","febrero","marzo","abril","mayo","junio", "julio","agosto","septiembre","octubre","noviembre","diciembre" ],
monthNamesShort: [ "ene","feb","mar","abr","may","jun", "jul","ago","sep","oct","nov","dic" ],
dayNames: [ "domingo","lunes","martes","miércoles","jueves","viernes","sábado" ],
dayNamesShort: [ "dom","lun","mar","mié","jue","vie","sáb" ],
dayNamesMin: [ "D","L","M","X","J","V","S" ],
weekHeader: "Sm",
dateFormat: "dd/mm/yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ""
//time
timeOnlyTitle: 'Elegir una hora',
timeText: 'Hora',
hourText: 'Horas',
minuteText: 'Minutos',
secondText: 'Segundos',
millisecText: 'Milisegundos',
microsecText: 'Microsegundos',
timezoneText: 'Uso horario',
timeFormat: 'HH:mm',
timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
};
}
}
详情看: datapicker timepicker
10.属性
Z属性名 | 属性值类型 | 默认值 | 描述 |
---|---|---|---|
readonlyInput | string | null | 设置后,组织键盘手动输入日期 |
style | string | null | 组件的内联样式 |
styleClass | string | null | 组件的样式类 |
inputStyle | string | null | 输入区的内联风格 |
inputStyleClass | string | null | 输入区的样式类 |
placeholder | string | null | 文本输入框的占位符 |
inline | boolean | false | 当启用时,显示内联(inline)的日历。默认值为false,弹出(popup)形式 |
showAnim | string | null | 弹出(popup)时的动画效果. |
showIcon | boolean | false | 当启用后,在input框旁边展现一个带图标的button按钮 |
dateFormat | string | mm/dd/yy | 日期格式 |
showButtonPanel | boolean | null | 是否在日历下面显示按钮面板 |
monthNavigator | boolean | false | 月份是否显示为下拉,而不是文本 |
yearNavigator | boolean | false | 年份是否显示为下拉,而不是文本 |
numberOfMonths | number | 1 | 一次显示的月份的数量 |
showWeek | boolean | false | 设置为true,增加一列显示年中的周 |
showOtherMonths | boolean | false | Whether days in other months shown before or after the current month are selectable. This only applies if the showOtherMonths option is set to true. |
selectOtherMonths | boolean | false | 当月份开始或者结束时,是否显示在其他月份显示日期(non-selectable),showOtherMonths 设置为true时显示 |
defaultDate | string | null | 第一次打开时,如果字段为空,将日期设置为突出 |
minDate | string | null | 可选的最小日期 |
maxDate | string | null | 可选的最大日期 |
disabled | boolean | false | 启用后, 隐藏该组件 |
timeFormat | string | HH:mm | 时间设置为字符串格式 |
timeOnly | boolean | false | 隐藏日期选择,只展示时间 |
stepHour | number | 1 | 滑块每一步的小时数 |
stepMinute | number | 1 | 滑块每一步的分钟数 |
stepSecond | number | 1 | 滑块每一步的秒数 |
hourMin | number | 0 | 最小小时数 |
hourMax | number | 0 | 最大小时数 |
minuteMin | number | 0 | 最小分钟数 |
minuteMax | number | 0 | 最大分钟数 |
secondMin | number | 0 | 最小秒数 |
secondMax | number | 0 | 最大秒数 |
hourGrid | number | 0 | 计数器间隔小时数 |
minuteGrid | number | 0 | 计数器间隔分钟数 |
secondGrid | number | 0 | 计数器间隔秒数 |
timeControlType | string | slider | 定义时间输入的ui,可选值为slider和select |
horizontalTimeControls | boolean | false | 是否水平显示选择的元素 |
minTime | string | null | 最小允许时间,'8:00 am'将限制时间在8am后 |
maxTime | string | null | 最大允许时间,'8:00 pm' 将限制在8pm之前 |
timezoneList | array | null | 数组填充时区来选择时区. 可以使用任意值或者数组对象: { label: "EDT", value: -240 }.The value should be the offset number in minutes. So "-0400" which is the format "-hhmm", would equate to -240 minutes. |
locale | object | null | 一个对象,拥有日期区域配置属性 |
icon | string | fa-calendar | 日历显示的图标 |
11.事件
事件名 | 事件参数 | 描述 |
---|---|---|
onSelect | value: Selected value | 在用户选择一天的时候触发 |
onBlur | event: Blur event | 在用户模糊输入时触发 |
12.样式风格
Name | Element |
---|---|
ui-calendar | Wrapper of input element |
ui-inputtext | Input element |
13.第三方组件依赖
jQuery UI 的 Datepicker 和 DateTimePicker