2017-08-30 53 views
0

我在Angular中的日期属性有问题。例如,我的下一个模型(打字稿)绑定和验证日期角

export class Model{ 
dateFrom Date; 
dateTo Date; 
} 

在创建视图我有:

<input type="date" [(ngModel)] = "model.dateFrom"> 
<input type="date" [(ngModel)] = "model.dateTo"> 

<button type="button" (click)="save()"></button> 

在我typescriptFile我有一个功能:

public save(){ 
    if(model.dateFrom > model.dateTo){ 
      //Show Error! 
    } 
} 

这里是问题:model.dateFrom和model.dateTo是字符串!不是日期! 我需要做很多日期比较,然后将数据发送到.net web api。 如何将字符串转换为日期?或者如何做Angular绑定返回日期类型? 我应该如何做日期验证??? 在Jquery项目中,我使用了moment.js,但是在Angular项目中,你使用什么来进行日期验证?

在此先感谢!

+0

我甚至不认为你的代码会编译。 “dateFrom Date”应该是什么意思?无论如何,'date'输入类型使用'yyyy-mm-dd'形式的字符串。他们应该比较原样。 – 2017-08-30 03:31:49

回答

0

// transform string to date 
 

 
new Date('2017-08-24 00:00:00'); // true 2017-08-24 00:00:00 
 
new Date('2017-08-24 00:00');  // true 2017-08-24 00:00:00 
 
new Date('2017-08-24 00');  // false 2017-08-24 00:00:00 
 

 
new Date('2017-08 00:00');  // true 2017-08-01 00:00:00 
 
new Date('2017 00:00');   // true 2017-01-01 00:00:00

角是使用Typescript

Typescript is Javascript transpiler

然后角是javascript

想要你在Angular项目中的日期验证?

使用moment.js

+0

非常棒!谢谢 !你如何整合Moment.js在Angular中?你使用npm吗?或者,你是否下载Moment.js(javascript文件)并手动访问它(如jquery声明var jQuery:any;)?提前致谢! –

+0

@yesterday我知道的一种方法是使用npm添加[@ types/moment](https://www.npmjs.com/package/@types/moment),并且有一种方法可以使用'declare var moment:任何;'。这两种方法都使用npm –

0

这取决于api预期的日期格式。 Javascript日期对象基于时间值,该值是1970年1月1日以来UTC的毫秒的数值。 [1]

我建议使用momentjs来帮助你解析日期,特别是如果你经常这样做的话。在JavaScript中的日期一样穿越与陷阱的地方等待一个迷宫处理你休想

库有直接的API

let dateA = moment('01/01/2016', 'MM/DD/YYYY'); 
let dateB = moment('01/01/2017', 'MM/DD/YYYY'); 
// You can perform operations between the variables like so 
dateB.diff(dateA, 'years') // returns 1 
+0

如何将Moment.js整合到Angular中?你使用npm吗?或者,你是否下载Moment.js(javascript文件)并手动访问它(如jquery声明var jQuery:any;)?提前致谢! –

+0

你提到的两种方式都可以工作,这取决于你的项目如何结构化 – jkris