我正在尝试使用角度材质日期选择器,并收到以下错误:
TypeError: date.toLocaleDateString is not a function
at Object.defaultFormatDate [as formatDate] (angular-material.js:6860)
at DatePickerCtrl.configureNgModel.ngModelCtrl.$render (angular-material.js:7184)
at Object.<anonymous> (angular.js:25233)
at m.a.$get.m.$digest (angular.js:15707)
at m.a.$get.m.$apply (angular.js:15986)
at g (angular.js:10511)
at L (angular.js:10683)
at XMLHttpRequest.A.onload (angular.js:10624)
我在这里从代码笔中取了示例: https://material.angularjs.org/latest/#/demo/material.components.input
相关的HTML代码:
<div layout="" layout-sm="column">
<md-input-container style="width:70%">
<label>Company (Disabled)</label>
<input ng-model="user.company" disabled="">
</md-input-container>
<md-datepicker ng-model="date" md-placeholder="Enter date"></md-datepicker>
</div>
我的控制器
$scope.date={};
$scope.$watch('date', function () {
console.log($scope.date);
});
答案 0 :(得分:4)
toLocaleDateString是日期对象的本机方法,因此看起来您的md-datepicker未绑定到日期。如果没有HTML和填充数据的代码,很难确定,但这是最可能的原因。
答案 1 :(得分:0)
您的date
对象很可能不属于Date
类型,请确保它仅属于该类型,而不是string
或其他类型。
这就是我遇到这个问题的原因,以及我是如何解决它的。希望这会有所帮助。
答案 2 :(得分:-1)
我遇到了这个错误,因为我正在尝试将格式字符串值分配给与md-datepicker绑定的模型,该模型是保持javascript日期类型 像这样
$scope.eventdate = $filter('date')($scope.eventdate, 'yyyy-MM-dd');
解决方案是为md-datepicker声明新模型并获得它的值
on js
$scope.eventdate = $filter('date')($scope.mddate, 'yyyy-MM-dd');
on html
<md-datepicker ng-model="mddate" md-placeholder="Enter date" required></md-datepicker>
希望这可以帮到你
答案 3 :(得分:-1)
我有完全相同的问题,但上面的答案没有帮助。
使用新的Date()初始化datepicker有效,但是当尝试使用从服务器返回的值进行初始化时,我得到了上面的错误 - 尽管它们看起来似乎是相同的格式。
最后,我必须显式创建一个Date对象,然后使用Parse设置它的值。
var date = ctrl.data.fromServer;
ctrl.data.fromServer= new Date();
if (date != undefined)
{
ctrl.data.fromServer.setTime(Date.parse(date));
}