在我的angular 4项目中,我的html中有一个日期选择器。
在html中:
<mat-form-field class="col-sm-12 nopadding pull-left">
<input matInput [matDatepicker]="date" placeholder="Please select a date" [(ngModel)]="txtDate">
<mat-datepicker-toggle matSuffix [for]="date"></mat-datepicker-toggle>
<mat-datepicker #date></mat-datepicker>
</mat-form-field>
我可以选择日期并将其转换为我的数据库中的dd / mm / yyyy格式。当我检索日期将其转换回MM / DD / YYYY(我的日期选择器工作的格式)时,我从Web api获取了值,并且在控制台中我可以看到该值已正确转换并分配给ngModel。但它不会显示在datepicker字段中
在ts文件中
var dateParts = result.Date.split("/");
var dateObject = new Date(dateParts [2], dateParts [1] - 1, dateParts [0]);
this.txtDate=moment(dateObject ).format('MM/DD/YYYY'); -- output of this in console is 11/14/2018 (the desired output)
,但日期选择器中未显示相同的内容。 你能帮忙吗!
答案 0 :(得分:1)
我建议您创建一个自定义管道:
[(ngModel)]="txtDate | dateformatter:'MM/DD/YYYY'"
import {
Pipe,
PipeTransform
} from '@angular/core';
@Pipe({ name: 'dateformatter' })
export class DateFormatterPipe implements PipeTransform {
transform(value: number, dateformat: string): string {
var dateParts = result.Date.split("/");
var dateObject = new Date(dateParts [2], dateParts [1] - 1, dateParts [0]);
return moment(dateObject).format(dateformat.toUpperCase());
}
}
或者您可以看一下date
管道:
[(ngModel)]="txtDate | date:'shortDate'"
答案 1 :(得分:0)
由于您没有提供可重复的最小代码,因此我只是浏览了 Angular Material 文档,发现需要将日期转换为ISOString格式。这是来自stackbliz
的代码