2017-08-30 51 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