Angular Material DatePicker date.toLocaleDateString 不是函数

Angular Material DatePicker date.toLocaleDateString is not a function

我正在尝试使用 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.<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);
});

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

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

$scope.eventdate = $filter('date')($scope.eventdate, 'yyyy-MM-dd');

解决方案是为 md-datepicker 声明新模型并像这样获取它的值

关于 js

$scope.eventdate = $filter('date')($scope.mddate, 'yyyy-MM-dd');

于 html

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

希望对您有所帮助

我遇到了完全相同的问题,但上面的答案没有帮助。

使用 new Date() 初始化日期选择器有效,但是当尝试使用从服务器返回的值进行初始化时,我得到了上面的错误 - 尽管它们看起来是相同的格式。

最后我不得不显式创建一个 Date 对象,然后使用 Parse 设置它的值。

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

您的 date 对象很可能不是 Date 类型,请确保它只是那种类型,而不是 string 或其他类型。

这就是我遇到这个问题的原因,以及我是如何解决它的。希望这有帮助。