angularjs – 将类型为datetime-local的输入绑定到角度2中的Date
发布时间:2020-12-17 09:29:10 所属栏目:安全 来源:网络整理
导读:可以将Date类型的组件属性绑定到类型设置为datetime-local的 HTML5输入? 在我的组件中,我有一个气质: public filterDateFrom: Date; 在我的模板中,我有一个输入定义为: input type="datetime-local" [(ngModel)]="filterDateFrom" / 但绑定不起作用. Demo
可以将Date类型的组件属性绑定到类型设置为datetime-local的
HTML5输入?
在我的组件中,我有一个气质: public filterDateFrom: Date; 在我的模板中,我有一个输入定义为: <input type="datetime-local" [(ngModel)]="filterDateFrom" /> 但绑定不起作用.
Demo Plnkr
您可以使用以下格式绑定日期:yyyy-MM-ddTHH:mm,您还可以从date.toISOString().slice(0,16)(切片在分钟后移除时间部分). @Component({ selector: 'app',template: `<input type="datetime-local" [value]="date" (change)="date=$event.target.value" /> {{date}}` }) export class AppComponent { date: string; constructor() { this.date = new Date().toISOString().slice(0,16); } } 请记住,date.toISOString()将从本地时间返回一个日期偏移量.您还可以自己构建日期字符串: private toDateString(date: Date): string { return (date.getFullYear().toString() + '-' + ("0" + (date.getMonth() + 1)).slice(-2) + '-' + ("0" + (date.getDate())).slice(-2)) + 'T' + date.toTimeString().slice(0,5); } 如果您想要将选择绑定到Date模型,可以使用它来构建自定义日期组件: @Component({ selector: 'my-date',events: ['dateChange'],template: `<input type="datetime-local" [value] = "_date" (change) = "onDateChange($event.target.value)" />` }) export class MyDate{ private _date: string; @Input() set date(d: Date) { this._date = this.toDateString(d); } @Output() dateChange: EventEmitter<Date>; constructor() { this.date = new Date(); this.dateChange = new EventEmitter(); } private toDateString(date: Date): string { return (date.getFullYear().toString() + '-' + ("0" + (date.getMonth() + 1)).slice(-2) + '-' + ("0" + (date.getDate())).slice(-2)) + 'T' + date.toTimeString().slice(0,5); } private parseDateString(date:string): Date { date = date.replace('T','-'); var parts = date.split('-'); var timeParts = parts[3].split(':'); // new Date(year,month [,day [,hours[,minutes[,seconds[,ms]]]]]) return new Date(parts[0],parts[1]-1,parts[2],timeParts[0],timeParts[1]); // Note: months are 0-based } private onDateChange(value: string): void { if (value != this._date) { var parsedDate = this.parseDateString(value); // check if date is valid first if (parsedDate.getTime() != NaN) { this._date = value; this.dateChange.emit(parsedDate); } } } } 您的组件的用户将绑定到具有双向模型绑定的Date模型: @Component({ selector: 'my-app',directives: [MyDate],template: '<my-date [(date)]="date"></my-date> {{date}}' }) export class AppComponent { @Input() date: Date; constructor() { this.date = new Date(); } } 或者如果要避免自定义标签,请重写组件作为指令: <input type="datetime-local" [(date)]="date" /> Demo Plnkr with Directive (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【数据结构】图的遍历方法 深度优先遍历和广度优先遍历
- scala – 具有对象键的记录的Circe通用编解码器派生
- angularjs – npm/yeoman安装发电机角度没有sudo
- 编译 – 在Vim中编译器命令是做什么的?
- WebService 在传回 ArrayList 时说: XML 文档时出错
- angularjs – 通过ng-submit找到触发按钮
- WebService应用-ABAP实例:ABAP调用外部WebService
- 【WebService】2.CXF概述和使用CXF开发WebService服务器端
- bootstrap之modal
- Bootstrap Navbar无法正常工作:AngularCLI