【问题标题】:How to format angular mat date picker value如何格式化角垫日期选择器值
【发布时间】:2019-12-29 00:01:28
【问题描述】:

我在我的表单中使用 mat 日期选择器并将值保存到我的数据库中。该值以这种格式保存:2019-08-22T23:00:00。我正在从数据库中取回这些值并使用 ngModel 将它们绑定到表单输入,但我在将日期绑定到 mat 日期选择器时遇到问题。

这是我的 HTML:

<mat-form-field>
   <input matInput [matDatepicker]="picker" placeholder="Date of birth" 
   [ngModel]="user.dob | date " name='dob'>
   <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
   <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

我将上面的值发送到 mysql 数据库。我注意到,当我选择像 2019 年 8 月 23 日这样的日期时,它会以这种格式 2019-08-22T23:00:00 返回 22 日。当我从数据库中取回数据并尝试将其绑定到上面的日期类型输入字段时,它没有绑定。如何使日期选择器返回选定的日期,以及如何以dd-mm-yy 的格式将日期绑定到它。谢谢。

【问题讨论】:

  • 您是否使用 firebase 作为数据库?如果是这样,可能是由于将日期对象转换为时间戳。否则你可以分享你正在使用的代码吗?
  • @chrismclarke 没有。我使用mysql数据库。我已经更新了我的问题。
  • 好的,在这种情况下,我认为最好使用 formControl 而不是 ngModel。下面将提供一个示例

标签: angular date angular-material


【解决方案1】:

最简单的方法是使用表单控件。这可以绑定到value 字段或formControl 字段,即:

@Component({
  selector: 'datepicker-value-example',
  templateUrl: 'datepicker-value-example.html',
  styleUrls: ['datepicker-value-example.css'],
})
export class DatepickerValueExample {
  date = new FormControl('2019-08-22T23:00:00');
}

AppComponent.ts

<mat-form-field>
  <input matInput [matDatepicker]="picker1" placeholder="Angular forms" [formControl]="date">
  <mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
  <mat-datepicker #picker1></mat-datepicker>
</mat-form-field>

<mat-form-field>
  <input matInput [matDatepicker]="picker3" placeholder="Value binding" [value]="date.value">
  <mat-datepicker-toggle matSuffix [for]="picker3"></mat-datepicker-toggle>
  <mat-datepicker #picker3></mat-datepicker>
</mat-form-field>

AppComponent.html

你可以在这里看到一个有效的闪电战:https://stackblitz.com/edit/angular-umwtzi?file=app%2Fdatepicker-value-example.html

或材料文档中的更多文档和示例:https://material.angular.io/components/datepicker/examples

【讨论】:

  • 感谢它的工作。我只是在想,如果我想更改日期格式怎么办,就像我想要格式为 23rd August, 2019 一样。这有可能实现吗?
  • 该格式无法识别为日期构造函数参数(即 new Date('23rd August, 2019') 返回无效),因此它不起作用。如果有意义的话,您必须添加自己的手动方法以在绑定之前将字符串转换回日期?
  • 但如果只是你想改变的显示,那么有办法做到这一点,见最后一个例子:material.angular.io/components/datepicker/examples
  • 好的。谢谢。会去看看
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2018-12-31
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多