【问题标题】:Ionic DateTime error: Cannot read property 'toISOString' of undefined离子日期时间错误:无法读取未定义的属性“toISOString”
【发布时间】:2021-07-23 10:49:00
【问题描述】:

我想将当前日期显示为默认值,如果我使用 formControlName 则不起作用,但我需要使用 formControlName。

这是我的 HTML 文件

  <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>

这是我的 TS 文件

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]]
}); 
}
}

当我编译项目时出现此错误

“错误错误:未捕获(承诺中):TypeError:无法读取未定义的属性'toISOString'”

“TypeError:无法读取未定义的属性“toISOString””

谁能指点我正确的方向?

【问题讨论】:

  • 这意味着你的价值是未定义的。您可以进行真实性检查并避免此错误。您可以访问未定义的属性。 startDate.toISOString() startDate 似乎在这里没有定义。
  • 要在表单构建器对象中设置初始值,请勿在 html 模板中使用 [value]。您可以将 '' 替换为字段的初始值,例如:startDate: [(new Date()).toISOString(), [Validators.required]]
  • 感谢@C.Gäking 现在正在工作:)
  • 很好 ;-) 我会再次将其写为答案,以便您接受,好吗?我会很高兴

标签: javascript html typescript ionic-framework frontend


【解决方案1】:

要在表单构建器对象中设置初始值,请不要在 html 模板中使用 [value]。您可以将 '' 替换为字段的初始值,例如:

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

【讨论】:

    【解决方案2】:

    由于时间显示不正确导致的错误。您正在寻找的答案:

    // 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'
    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2021-12-03
    • 2019-02-26
    • 1970-01-01
    • 2018-12-12
    相关资源
    最近更新 更多