Html5 поле даты не может установить обратно поле даты, поступающее из бэкэнда
У меня есть поле даты HTML. У меня есть страница создания, где я вставляю дату в базу данных MySQL. У меня есть страница редактирования, где я выбираю дату и возвращаюсь в поле ввода.
<input id="dob" name="dob" type="date" placeholder="Enter date of birth" class="form-control" ng-model="user.dob"/>
JS
function loadUserById() {
ApiService.getById($scope.id).then(function(response) {
$scope.user = response.data[0];
$scope.user.password1 = response.data[0].password;
if($scope.user.dob) {
var date = new Date($scope.user.dob);
$scope.user.dob = moment(date).format("MM/DD/YYYY");
}
}, function(error) {
console.log(error);
});
}
проблема
я вставляю дату из этого поля в базу данных MySQL и форматирую ее как YYYY-MM-DD
формат. Тогда я форматирую в mm/dd/yyyy
формат и пытается установить его в поле даты HTML.
но это бросает ошибку.
angular.js:14642 Error: [ngModel:datefmt] http://errors.angularjs.org/1.6.5/ngModel/datefmt?p0=06%2F03%2F2018
at angular.js:88
at Array.<anonymous> (angular.js:25252)
at angular.js:29245
at m.$digest (angular.js:18202)
at m.$apply (angular.js:18480)
at l (angular.js:12501)
at XMLHttpRequest.s.onload (angular.js:12655)
1 ответ
Получил ответ. Нужно использовать ng-значение, тогда оно автоматически установит дату в поле.
function loadUserById() {
ApiService.getById($scope.id).then(function(response) {
$scope.user = response.data[0];
$scope.user.password1 = response.data[0].password;
if($scope.user.dob) {
var date = new Date($scope.user.dob);
$scope.user.dob = moment(date).format("YYYY-MM-DD");
}
}, function(error) {
console.log(error);
});
}
<input id="dob" name="dob" type="date" ng-readonly="readOnly" placeholder="Enter date of birth" class="form-control" ng-model="user.dob" ng-value="user.dob"/>