Angularjs 角度材质日期选择器date.toLocaleDateString不是函数

Angularjs 角度材质日期选择器date.toLocaleDateString不是函数,angularjs,angular-material,Angularjs,Angular Material,我试图使用“角度材质日期选择器”,但出现以下错误: 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.<anon

我试图使用“角度材质日期选择器”,但出现以下错误:

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)

toLocaleDateString是日期对象的本机方法,因此您的md datepicker似乎未绑定到日期。如果没有填充数据的HTML和代码,很难确定,但这是最可能的原因。

我遇到了这个错误,因为我试图将格式字符串值分配给与md datepicker绑定的模型,md datepicker是hold javascript日期类型 像这样

$scope.eventdate = $filter('date')($scope.eventdate, 'yyyy-MM-dd');
解决方案是为md datepicker声明新模型,并按如下方式获取其值

关于js

关于html

 <md-datepicker ng-model="mddate" md-placeholder="Enter date" required></md-datepicker>


希望这能帮助你

我也有同样的问题,但上面的答案没有帮助

用new Date()初始化datepicker是可行的,但是当尝试用服务器返回的值初始化时,我得到了上面的错误——尽管它们看起来是相同的格式

最后,我必须显式地创建一个日期对象,然后使用Parse设置它的值

        var date = ctrl.data.fromServer;
        ctrl.data.fromServer= new Date();
        if (date != undefined)
        {
            ctrl.data.fromServer.setTime(Date.parse(date));
        }

很可能您的
date
对象不是
date
类型,请确保它只是该类型,而不是
字符串或其他类型


这就是我为什么会遇到这个问题,以及我是如何解决它的。希望这能有所帮助。

你是对的。我没有在控制器和作用域中将日期选择器的ng模型设置为有效的javascript日期。非常感谢。我将为此编辑我的问题,以便对其他人更有意义。是的,您的服务器返回文本。必须将文本显式转换为日期。
$scope.eventdate = $filter('date')($scope.mddate, 'yyyy-MM-dd');
 <md-datepicker ng-model="mddate" md-placeholder="Enter date" required></md-datepicker>
        var date = ctrl.data.fromServer;
        ctrl.data.fromServer= new Date();
        if (date != undefined)
        {
            ctrl.data.fromServer.setTime(Date.parse(date));
        }