Ionic 离子日期时间错误:无法读取未定义的属性'toISOString'

gijlo24d  于 2022-12-08  发布在  Ionic
关注(0)|答案(2)|浏览(127)

I want to display the current date as a default value,is not working if I use the formControlName but I need to use the formControlName.
Here is my HTML file

<ion-item>
    <ion-label color="primary"> Start date </ion-label>
    <ion-datetime [value]="startDate.toISOString()" formControlName="startDate" required></ion-datetime>
  </ion-item>
  <div id="startDateErrorMessage" *ngIf="newProjForm.controls['startDate'].invalid &(newProjForm.controls['startDate'].dirty || newProjForm.controls['startDate'].touched)">
    <span class="error ion-padding" *ngIf="newProjForm.controls['startDate'].errors.required"> Date is required </span>
  </div>

and here is my TS file

import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Component, OnInit } from '@angular/core';
import { AlertController } from '@ionic/angular';
@Component({
selector: 'app-new-project',
templateUrl: './new-project.page.html',
styleUrls: ['./new-project.page.scss'],
})
export class NewProjectPage implements OnInit {
newProjForm: FormGroup;
startDate: Date = new Date();
constructor(private formBuilder: FormBuilder, private alertCtrl: AlertController) { }
ngOnInit() {
this.newProjForm = this.formBuilder.group({
  startDate: ['' ,[Validators.required]]
}); 
}
}

when I compile the project I'm getting this errors
"ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'toISOString' of undefined"
"TypeError: Cannot read property 'toISOString' of undefined"
Can anyone point me in the right direction please?

zdwk9cvp

zdwk9cvp1#

要在表单生成器对象中设置初始值,请不要在html模板中使用[value]。您可以将"“替换为字段的初始值,如下所示:

this.newProjForm = this.formBuilder.group({
  startDate: [(new Date()).toISOString(), [Validators.required]] –
});
xzv2uavs

xzv2uavs2#

由于时间显示不正确而出错。您要查找的答案是:
// html:

<ion-datetime cancelText="отмена" doneText="Готово" [(ngModel)]="today" displayFormat="D MMM YYYY H:mm"
min="{{min_data}}" max="{{max_data}}" value="2021-11-15T11:00Z" monthShortNames="Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь">
</ion-datetime>

// ts:

today: any
min_data = ''
max_data = ''

pad(s, width, character) {
    return new Array(width - s.toString().length + 1).join(character) + s;
}

ngOnInit() {
    this.today = new Date()
    var numberOfDaysToAdd = 5 // increase by 5 days from today
    this.today.setDate(this.today.getDate() + numberOfDaysToAdd)
    this.min_data = this.today.getFullYear()+'-'+this.pad(this.today.getMonth() + 1, 2, '0')+'-'+this.pad(this.today.getDate(), 2, '0')
    this.max_data = (this.today.getFullYear()+1)+'-'+this.pad(this.today.getMonth() + 1, 2, '0')+'-'+this.pad(this.today.getDate(), 2, '0')
    this.today = this.today.getFullYear()+'-'+this.pad(this.today.getMonth() + 1, 2, '0')+'-'+this.pad(this.today.getDate(), 2, '0') + ' 18:00'
}

相关问题