我这里有问题。我想以模态形式使用Angular Material datepicker。我只是将它添加到我的表单中
<md-datepicker ng-model="new.warranty" md-placeholder="Enter date"></md-datepicker>
如果我提交表格,我得到了这个:
Sun Apr 03 2016 00:00:00 GMT+0300 (EEST)
但是我想在发送之前以yyyy-MM-dd格式转换数据,所以我试图以这种方式转换日期格式
data.warranty = $filter('date')(Date.parse(data.warranty), 'yyyy-MM-dd');
所以我的表格发送了一个必需的yyyy-MM-dd格式,但每当我汇总表格时我都会收到错误。
`The ng-model for md-datepicker must be a Date instance. Currently the model is a: string`
所以,如果可能,请不要使用moment.js,如何防止此错误。
答案 0 :(得分:6)
当您在$filter('date')
上使用data.warranty
时,会将其从Date
对象转换为String
,因此会出错。
解决此问题的最快方法是将日期值复制为字符串:
<md-datepicker ng-model="new.warrantyDate" md-placeholder="Enter date"></md-datepicker>
每当您提交表单时,在提出请求之前,请以您需要的格式转换日期,但不要覆盖现有日期:
data.warranty = $filter('date')(Date.parse(data.warrantyDate), 'yyyy-MM-dd');
因此,您的warrantyDate
值仍将是Date
对象,并将继续有效。如果您在回复中修改日期,请不要忘记将warrantyDate
与修改日期同步。
您可以尝试的另一个选项是为$modelValue
变量创建一个不同$viewValue
和data.warranty
的指令。有关如何实现此目标的详细信息,请参阅ngModelController
上的documentation。
第二个选项需要更深入地了解角度是如何工作的,所以如果你处于angularjs路径的最开头,你可能会选择第一个选项。
答案 1 :(得分:0)
我通过覆盖md-datepicke解决了这个问题 ,这是代码
if