У меня есть текстовое поле, которое позволяет пользователю отправлять комментарии, я хочу получить дату во время отправки комментария и сохранить в json вместе с добавленным комментарием:
после того, как комментарий будет отправлен в файл json, я хотел бы иметь что-то вроде этого:
"comment": [
{
"id": 1,
"username": "Michael Ross",
"city": "New York USA",
"date": "2018-01-01T00:00:00",
"task_id": 1,
"description": "Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et lig"
}
]
Проблема: прямо сейчас при отправке комментария у меня следующее: дата не отображается:
"comment": [
{
"id": 1,
"username": "Michael Ross",
"city": "New York USA",
"task_id": 1,
"description": "Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et lig"
}
]
Вот что я до сих пор пытался извлечь дату из введенного комментария.
HTML:
<form class = "add-comments" [formGroup] = "addForm" (keyup.enter) = "addComments()">
<input type = "hidden" id = "localTime" name = "localTime">
<div class = "form-group">
<textarea class = "form-control" rows = "1" placeholder = "Add comments" formControlName = "description" id = "description"></textarea>
</div>
</form>
Вот метод на компо ц.
addComments(task_id) {
const formData = this.addForm.value;
formData.task_id = task_id;
this.userService.addComments(formData)
.subscribe(data => {
this.comments.push(this.addForm.value);
});
const date = new Date();
const d = date.getUTCDate();
const day = (d < 10) ? '0' + d : d;
const m = date.getUTCMonth() + 1;
const month = (m < 10) ? '0' + m : m;
const year = date.getUTCFullYear();
const h = date.getUTCHours();
const hour = (h < 10) ? '0' + h : h;
const mi = date.getUTCMinutes();
const minute = (mi < 10) ? '0' + mi : mi;
const sc = date.getUTCSeconds();
const second = (sc < 10) ? '0' + sc : sc;
const loctime = month + day + hour + minute + year + '.' + second;
document.getElementById('localTime').value = loctime;
}
К сожалению, когда я отправляю комментарий, я получаю следующую ошибку
ERROR in src/app/user-profile/user-profile.component.ts(75,21): error TS2365: Operator '+' cannot be applied to types 'string | number' and 'string | number'.
src/app/user-profile/user-profile.component.ts(77,42): error TS2339: Property 'value' does not exist on type 'HTMLElement'.
что мне нужно изменить, чтобы получить то, что я хочу ??
const loctime = month + day + hour + minute + year + '.' + second;
Я сделал это таким образом, но не уверен, что это правильно, поэтому мне нужна была помощь :(
Вы можете попробовать этот код
const loctime = `${year}-${month}-${day}T${hour}:${minute}:${second}`;
// output "2018-10-27T10:26:32"
Вместо использования Javascript Way попробуйте использовать Angular способ
<input type = "hidden" id = "localTime" name = "localTime" formControlName = "localTime">
this. addForm.get('localTime').setValue(loctime);
Примечание: нам нужно использовать обратную галочку (``) вместо одинарной кавычки ('').
Дайте проверить, я буду брб :)
после изменения, как вы рекомендовали, я получаю следующую ошибку: ERROR Error: InvalidPipeArgument: 'Unable to convert "${year}-${month}-${day}T${hour}:${minute}:${second}" into a date' for pipe 'DatePipe'
используя это значение, применяете ли вы datepipe ?. Вы не можете применить строку к datepipe. Сначала преобразовать в дату (ГГГГ-ММ-ДД), затем применить трубу
вот мое репо github.com/throne1986/profile/blob/master/src/app/user-profi le /…, вы можете показать мне, как конвертировать на сегодняшний день? я изо всех сил пытаюсь понять это
его неправильная const loctime = '$ {год} - $ {месяц} - $ {день} T $ {час}: $ {минута}: $ {секунда}'; Правильно: const loctime = ${year}-${month}-${day}T${hour}:${minute}:${second}
; вместо одинарной кавычки используйте back-stick.
вместо одинарной кавычки используйте обратную палку (``)
Это работает, как и ожидалось, спасибо, братан, не могли бы вы дать ответ для справки в будущем, и я приму это
Позвольте нам продолжить обсуждение в чате.
Теперь, когда я добавляю комментарии, отображаются комментарии и дата, но после того, как дата обновления исчезла, что мне нужно изменить, чтобы сохранить данные в файл json, теперь это то, что у меня есть в файле json после отправки: { "id": 3, "localTime": null, "description": "Lorem ipsum dolor" }
Какой формат у
loctime
внутри "compoents ts"?