angular - 使用 Angular Material 日期选择器自动格式化日期输入
问题描述
是否可以从角度材料自动格式化日期选择器输入中的日期(时刻)?
我的用例是让用户在输入中键入日期“DDMMYYYY”,如果它是“fr-FR”区域设置的有效日期,则格式与直接使用日历时相同,因此“DD/MM/ YYYY”。示例:03052018 > 03/05/2018
我想为我的应用程序的所有日期选择器做这件事,所以我想知道它是否可以通过扩展MomentDateAdapter
或类似的东西来实现?实际上我使用(dateChange)
事件手动完成并绑定const formatedValue = moment(value, 'DDMMYYYY', 'fr-FR');
到输入
提前致谢 !
解决方案
最后我使用了一个指令:
import { Directive, ElementRef, HostListener } from '@angular/core';
import * as moment from 'moment';
@Directive({
selector: '[appFormatDate]'
})
export class FormatDateDirective {
constructor(private el: ElementRef) {}
@HostListener('blur')
onBlur() {
const inputValue = this.el.nativeElement.value;
console.log(inputValue);
if (inputValue !== '') {
this.formatDate(inputValue);
}
}
formatDate(value: string) {
const momentDate = moment(value, ['DDMMYYYY', 'D MMMM YYYY'], 'fr-FR'); // Ex : [01012018, 1 janvier 2018]
const formatedValue = momentDate.isValid() ? momentDate.format('DD/MM/YYYY') : value;
console.log(formatedValue);
this.el.nativeElement.value = formatedValue;
}
}
推荐阅读
- python - 如何提取图像中由空格分隔的子图?
- java - 使用 Duo Access Gateway 的 Android 上的 SAML 2.0
- angular - dateClass 属性仅在角度材料 matCalendar 中触发一次
- c# - 双击标签时如何更改标签的背景颜色?
- server - CPanel 共享服务器上的恶意软件
- selenium - 无法找到 web 元素,元素根据字段突出显示更改
- json - jq 的意外循环循环
- java - 在不将 Java 升级到 8 或更高版本的情况下寻找解决方法,支持 Java 1.7.0_79 中的 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 密码
- arduino - DragGO LGO1 未通过串行监视器或 ssh 命令连接
- python - 为什么我的字典值在我不告诉它的情况下发生变化,我该如何阻止它?