@luoxiao123/angular-material-date-time-range-picker 21.0.1 → 21.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -62,17 +62,35 @@ yarn add @luoxiao123/angular-material-date-time-range-picker
|
|
|
62
62
|
```typescript
|
|
63
63
|
import { Component } from '@angular/core';
|
|
64
64
|
import { DatePickerComponent, DateTimePickerValue } from '@luoxiao123/angular-material-date-time-range-picker';
|
|
65
|
+
import { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';
|
|
66
|
+
import { MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
67
|
+
import { zhCN } from 'date-fns/locale';
|
|
68
|
+
|
|
69
|
+
export const MY_DATE_FORMATS = {
|
|
70
|
+
parse: {
|
|
71
|
+
dateInput: 'yyyy-MM-dd',
|
|
72
|
+
},
|
|
73
|
+
display: {
|
|
74
|
+
dateInput: 'yyyy-MM-dd',
|
|
75
|
+
monthYearLabel: 'MMM yyyy',
|
|
76
|
+
dateA11yLabel: 'PP',
|
|
77
|
+
monthYearA11yLabel: 'MMMM yyyy',
|
|
78
|
+
},
|
|
79
|
+
};
|
|
65
80
|
|
|
66
81
|
@Component({
|
|
67
82
|
selector: 'app-root',
|
|
68
83
|
standalone: true,
|
|
69
84
|
imports: [DatePickerComponent],
|
|
85
|
+
providers: [
|
|
86
|
+
provideDateFnsAdapter(),
|
|
87
|
+
{ provide: MAT_DATE_LOCALE, useValue: zhCN },
|
|
88
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS }
|
|
89
|
+
],
|
|
70
90
|
template: `
|
|
71
91
|
<date-time-picker
|
|
72
92
|
[(ngModel)]="selectedRange"
|
|
73
93
|
[required]="true"
|
|
74
|
-
[dateFormat]="'yyyy年M月d日 HH:mm'"
|
|
75
|
-
[optionalFeatures]="true"
|
|
76
94
|
(selectionChange)="onRangeSelected($event)"
|
|
77
95
|
/>
|
|
78
96
|
`,
|
|
@@ -98,7 +116,6 @@ export class AppComponent {
|
|
|
98
116
|
matInput
|
|
99
117
|
[(ngModel)]="selectedRange"
|
|
100
118
|
[required]="true"
|
|
101
|
-
[dateFormat]="'yyyy-MM-dd HH:mm'"
|
|
102
119
|
/>
|
|
103
120
|
@if (formControl.hasError('required')) {
|
|
104
121
|
<mat-error>此字段为必填</mat-error>
|
|
@@ -125,7 +142,6 @@ export class AppComponent {
|
|
|
125
142
|
// 模板
|
|
126
143
|
<date-time-picker
|
|
127
144
|
[formControl]="rangeControl"
|
|
128
|
-
[dateFormat]="'yyyy-MM-dd HH:mm'"
|
|
129
145
|
/>
|
|
130
146
|
```
|
|
131
147
|
|
|
@@ -144,20 +160,6 @@ import { DatePickerComponent } from '@luoxiao123/angular-material-date-time-rang
|
|
|
144
160
|
export class DateRangeModule {}
|
|
145
161
|
```
|
|
146
162
|
|
|
147
|
-
## 使用指南
|
|
148
|
-
|
|
149
|
-
### Standalone Components
|
|
150
|
-
|
|
151
|
-
推荐用于现代 Angular 应用的方式。直接在组件 imports 中使用。
|
|
152
|
-
|
|
153
|
-
### mat-form-field 集成
|
|
154
|
-
|
|
155
|
-
组件完美适配 Angular Material 的 `mat-form-field`,可自动应用表单样式和错误提示。
|
|
156
|
-
|
|
157
|
-
### 双向数据绑定
|
|
158
|
-
|
|
159
|
-
支持 `[(ngModel)]` 和响应式表单 `[formControl]`。
|
|
160
|
-
|
|
161
163
|
## API 文档
|
|
162
164
|
|
|
163
165
|
### 输入属性
|
|
@@ -167,9 +169,7 @@ export class DateRangeModule {}
|
|
|
167
169
|
| `ngModel` / `formControl` | `DateTimePickerValue \| null` | - | 选中的日期时间范围(支持双向绑定) |
|
|
168
170
|
| `required` | `boolean` | `false` | 是否为必填项 |
|
|
169
171
|
| `disabled` | `boolean` | `false` | 是否禁用组件 |
|
|
170
|
-
| `
|
|
171
|
-
| `valueFormat` | `string` | `'yyyy-MM-dd HH:mm:ss'` | 值的输出格式(DatePipe 格式) |
|
|
172
|
-
| `optionalFeatures` | `boolean` | `true` | 是否启用星期选择和小时范围选择 |
|
|
172
|
+
| `placeholder` | `string` | `''` | 输入框占位符 |
|
|
173
173
|
| `future` | `boolean` | `false` | 是否允许选择未来日期 |
|
|
174
174
|
|
|
175
175
|
### 输出事件
|
|
@@ -184,50 +184,42 @@ export class DateRangeModule {}
|
|
|
184
184
|
|
|
185
185
|
| 属性 | 类型 | 说明 |
|
|
186
186
|
|------|------|------|
|
|
187
|
-
| `start` | `string` |
|
|
188
|
-
| `end` | `string` |
|
|
189
|
-
|
|
190
|
-
#### TimeRange
|
|
191
|
-
|
|
192
|
-
| 属性 | 类型 | 说明 |
|
|
193
|
-
|------|------|------|
|
|
194
|
-
| `label` | `string` | 显示标签 |
|
|
195
|
-
| `start` | `string` | 开始时间表达式 |
|
|
196
|
-
| `end` | `string` | 结束时间表达式 |
|
|
187
|
+
| `start` | `string` | 格式化后的开始日期时间 (基于 MAT_DATE_FORMATS + HH:mm) |
|
|
188
|
+
| `end` | `string` | 格式化后的结束日期时间 (基于 MAT_DATE_FORMATS + HH:mm) |
|
|
197
189
|
|
|
198
190
|
## 配置
|
|
199
191
|
|
|
200
|
-
### 基础示例
|
|
201
|
-
|
|
202
|
-
```typescript
|
|
203
|
-
<date-time-picker
|
|
204
|
-
[(ngModel)]="selectedRange"
|
|
205
|
-
[required]="true"
|
|
206
|
-
[disabled]="isLoading"
|
|
207
|
-
[optionalFeatures]="true"
|
|
208
|
-
[future]="false"
|
|
209
|
-
[dateFormat]="'yyyy-MM-dd HH:mm'"
|
|
210
|
-
(selectionChange)="onRangeSelected($event)"
|
|
211
|
-
/>
|
|
212
|
-
```
|
|
213
|
-
|
|
214
192
|
### 自定义日期格式
|
|
215
193
|
|
|
216
|
-
|
|
217
|
-
// 中文格式
|
|
218
|
-
[dateFormat]="'yyyy年M月d日 HH:mm'"
|
|
219
|
-
|
|
220
|
-
// 英文格式
|
|
221
|
-
[dateFormat]="'MMM d, yyyy HH:mm'"
|
|
194
|
+
组件使用 Angular Material 的 `DateAdapter` 和 `MAT_DATE_FORMATS` 进行日期格式化。您可以在应用或组件级别提供自定义的适配器和格式。
|
|
222
195
|
|
|
223
|
-
|
|
224
|
-
[dateFormat]="'yyyy-MM-dd HH:mm:ss'"
|
|
196
|
+
推荐使用 `@angular/material-date-fns-adapter` 和 `date-fns`:
|
|
225
197
|
|
|
226
|
-
|
|
227
|
-
|
|
198
|
+
```typescript
|
|
199
|
+
import { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';
|
|
200
|
+
import { MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
201
|
+
import { zhCN } from 'date-fns/locale';
|
|
202
|
+
|
|
203
|
+
export const MY_DATE_FORMATS = {
|
|
204
|
+
parse: {
|
|
205
|
+
dateInput: 'yyyy-MM-dd',
|
|
206
|
+
},
|
|
207
|
+
display: {
|
|
208
|
+
dateInput: 'yyyy-MM-dd',
|
|
209
|
+
monthYearLabel: 'MMM yyyy',
|
|
210
|
+
dateA11yLabel: 'PP',
|
|
211
|
+
monthYearA11yLabel: 'MMMM yyyy',
|
|
212
|
+
},
|
|
213
|
+
};
|
|
228
214
|
|
|
229
|
-
|
|
230
|
-
|
|
215
|
+
@Component({
|
|
216
|
+
// ...
|
|
217
|
+
providers: [
|
|
218
|
+
provideDateFnsAdapter(),
|
|
219
|
+
{ provide: MAT_DATE_LOCALE, useValue: zhCN },
|
|
220
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS }
|
|
221
|
+
]
|
|
222
|
+
})
|
|
231
223
|
```
|
|
232
224
|
|
|
233
225
|
### 设置初始值
|
|
@@ -263,15 +255,6 @@ ngOnInit() {
|
|
|
263
255
|
/>
|
|
264
256
|
```
|
|
265
257
|
|
|
266
|
-
### 禁用可选功能(星期和小时选择)
|
|
267
|
-
|
|
268
|
-
```typescript
|
|
269
|
-
<date-time-picker
|
|
270
|
-
[(ngModel)]="selectedRange"
|
|
271
|
-
[optionalFeatures]="false"
|
|
272
|
-
/>
|
|
273
|
-
```
|
|
274
|
-
|
|
275
258
|
## Angular 版本兼容性
|
|
276
259
|
|
|
277
260
|
| Angular 版本 | 支持情况 |
|
|
@@ -299,7 +282,7 @@ A: 当前版本使用中文界面。欢迎提交 PR 添加多语言支持。
|
|
|
299
282
|
A: 支持。组件使用标准的 Material Design 样式,可通过 CSS 变量和自定义 CSS 进行定制。
|
|
300
283
|
|
|
301
284
|
### Q: 如何处理时区问题?
|
|
302
|
-
A:
|
|
285
|
+
A: 组件返回的日期时间字符串基于本地时间(Local Time),格式化结果取决于 `MAT_DATE_FORMATS` 配置。如果需要处理时区,建议在获取值后使用 `date-fns` 或 `moment.js` 等库进行转换。
|
|
303
286
|
|
|
304
287
|
## 贡献
|
|
305
288
|
|
|
@@ -317,8 +300,8 @@ A: 组件使用 ISO 8601 格式,完整支持时区信息。
|
|
|
317
300
|
|
|
318
301
|
## 致谢
|
|
319
302
|
|
|
320
|
-
|
|
303
|
+
本项目参考了 [material-tailwind-range-date-picker](https://github.com/omidkh68/material-tailwind-range-date-picker) 和 [Angular Material Datepicker](https://material.angular.dev/components/datepicker/overview) 的设计理念和实现方法,在此感谢这些优秀项目及其开发者!
|
|
321
304
|
|
|
322
305
|
## 许可证
|
|
323
306
|
|
|
324
|
-
MIT License © 2026 [xylplm](https://github.com/xylplm)
|
|
307
|
+
MIT License © 2026 [xylplm](https://github.com/xylplm)
|