Angular 7 (Изменить) -Функция для типа ввода Дата не работает, но почему формат неправильный? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь обновить дату с помощью клавиш. Мне также нужно, чтобы выбранная дата была присвоена свойству моего объекта. Вот мой следующий код:

<input type="date" [value]="dateTime()"  (change)="setDate($event)"/>

Функция dateTime возвращает дату, которая хранится в моем объекте, если он существует:

dateTime()
   if(this.info.sDate != ""){
     let date = this.info.sDate; //of format DD.MM.YYYY
     let year = date.substring(0,4);
     let month = date.substring(4,6);
     let day = date.substring(6,8);
     date = year + "-" + month + '-' + day;
     return date; // now of the format YYYY-MM-DD as needed
   } else {
     let today = moment().format("YYYY-MM-DD")
    return today; // if not existing, then return the date of today
   } 
  }

Теперь появляются проблемы, когда я я пытаюсь установить новую дату:

  setDate(e){
    this.info.sDate= e.target.value;
    }

Я пытаюсь назначить каждое изменение в дате свойству info.sDate моего объекта. Я получаю предупреждение: platform-browser.js:1133 The specified value "2020--0-1-" does not conform to the required format, "yyyy-MM-dd". хотя я не понимаю, почему.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Вы можете вызвать у себя много проблем, если вы склеите введенную пользователем дату, как эта. Формат может меняться в зависимости от локали пользователя.

Один из способов решения этой проблемы - использовать три разных поля ввода, по одному для каждого элемента даты (день, месяц, год).

Тогда вы можете сделать что-то вроде следующего.

let date = moment(`${this.day}-${this.month}-${this.year}`, "DD-MM-YYYY");
0 голосов
/ 10 января 2020
let year = date.substring(6,10);
let month = date.substring(3,5);
let day = date.substring(0,2);

Ваша подстрока дала: 10.0-1.-20, что выше даст: 2020-01-10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...