如何设置我的反应性表格日期输入值?

Jad*_*ade 6 typescript angular angular7

所以我试图显示此日期作为输入。但是在我的表单构建器组中设置它的值时未显示。我也希望能够对其进行格式化。

this.post.startDate是日期类型

.ts中的内容

this.editForm = this.formBuilder.group({
      startDate: [this.post.startDate, Validators.compose([Validators.required])],
      endDate: [this.post.endDate, Validators.compose([Validators.required])]
    });
Run Code Online (Sandbox Code Playgroud)

我的反应形式有这个

<form [formGroup]="editForm" (ngSubmit)="saveDate()">

        <label>Start Date: </label>
        <input type="date" formControlName="startDate" name="startDate" />

        <br />
        <label>End Date: </label>
        <input type="date" formControlName="endDate" name="endDate" />

        <br /><br />
        <input type="submit" value="Create Date">

      </form>
Run Code Online (Sandbox Code Playgroud)

小智 6

试试内置的formatDate包。

import { formatDate } from '@angular/common' 
Run Code Online (Sandbox Code Playgroud)

然后转换您的日期并将其设置为 datepicker 控件

this.yourForm.controls.controlName.setValue(formatDate(date,'yyyy-MM-dd','en'));
Run Code Online (Sandbox Code Playgroud)


Gre*_*nko 5

您可以通过两种方法将日期设置为默认值。

变体1:

要将默认日期值设置为使用date <input>类型的标签,则应使用valueinput-tag的HTML属性。

例:

<form [formGroup]="editForm2">
  <input type="date" formControlName="startDate" value="{{ post.startDate | date:'yyyy-MM-dd' }}">
  <input type="date" formControlName="endDate" value="{{ post.endDate | date:'yyyy-MM-dd' }}">
</form>
Run Code Online (Sandbox Code Playgroud)

变体2(推荐):

您可以formatDate()在angular中使用内置函数。

步骤1:

fromatDate()@angular/common您的组件打字稿文件中导入。

import { formatDate } from '@angular/common';
Run Code Online (Sandbox Code Playgroud)

提示:formatDate(yourDate, format, locale)需要3-4个参数。

第2步:

在表单组的定义中格式化日期。

this.editForm = this.formBuilder.group({
      startDate: [formatDate(this.post.startDate, 'yyyy-MM-dd', 'en'), [Validators.required]],
      endDate: [formatDate(this.post.endDate, 'yyyy-MM-dd', 'en'), [Validators.required]]
});
Run Code Online (Sandbox Code Playgroud)

这是工作示例:https : //stackblitz.com/edit/angular-kucypd

以下是输入类型日期的文档:https : //developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/date

  • 不要在属性内使用 {{ }},这是不好的做法! (2认同)