【问题标题】:Format date in reactive form以反应形式格式化日期
【发布时间】:2022-01-04 12:58:16
【问题描述】:

目前它显示 1/4/2022 ,它应该显示 01/04/2022(它应该是这种格式),问题是,有没有一种方法可以使用基于我的示例的反应形式来实现这种格式下面的模型?谢谢。

我们如何从这里格式化它 transactionStartDate: [this.model.transactionStartDate ||新日期()], ?是否需要日期 fns 工具?

#html代码

 <mat-form-field appearance="fill" class="transaction-control-filter" fxFlex="100">
                <mat-label class="transaction-detail-header-label">Transaction Start Date</mat-label>
                <input matInput [matDatepicker]="pickerStart" formControlName="transactionStartDate">
                <mat-datepicker-toggle matSuffix [for]="pickerStart"></mat-datepicker-toggle>
                <mat-datepicker #pickerStart class="transaction-detail-header-label"></mat-datepicker>
            </mat-form-field>

#ts 代码

private modelForm(): FormGroup {
      transactionStartDate: [this.model.transactionStartDate || new Date()],
    });
  }

【问题讨论】:

  • 你可以参考Angular Material doc中的example
  • 我们可以从这里格式化它 transactionStartDate: [this.model.transactionStartDate ||新日期()],?

标签: javascript angular typescript


【解决方案1】:

根据Angular Material可以使用自己的日期格式,可以导入NativeDateModule或者MomentDateModule(使用Moment.Js)。

例子:

app.module.ts

//import needed modules
import { MatMomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';
import { MAT_DATE_FORMATS, DateAdapter} from '@angular/material-moment-adapter';


//create your own formats
export const DateFormats = {
    parse: {
        dateInput: ['D/M/YYYY'] //D = Days, M = Months, Y = Years. you can change the input format
    },
    display: {
        dateInput: 'DD/MM/YYYY',
        monthYearLabel: 'MMM YYYY',
        dateA11yLabel: 'LL',
        monthYearA11yLabel: 'MMMM YYYY',
    }
};


//add it to your providers
..
providers: [
    ...,
    { provide: DateAdapter, useClass: MomentDateAdapter},
    { provide: MAT_DATE_FORMATS, useValue: DateFormats },
    ...
]

当然,您可以根据需要修改格式。以上代码未经测试! 确保你有Moment.js formatting的基本知识

【讨论】:

  • 有没有一种简单的方法可以直接在transactionStartDate上格式化:[this.model.transactionStartDate || new Date()],从 1/4/2022 到 01/04/2022
  • @junrey 使用是的,您可以使用 moment.js。将其安装在您的项目中并根据需要格式化您的值
  • moment.js 已被弃用 (momentjs.com/docs/#/-project-status)。从列出的备选方案中选择一个..
  • @eol 哦哇...这真的很可悲,他们做得很好 tbh
  • 是的。我唯一不喜欢的是它的可变性——除了那个伟大的库。 :)
猜你喜欢
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多