我正在尝试使用数字或日期的区域设置格式在 input 上进行双向数据绑定 . 见下面的代码:

<input type="date" [ngModel]="user.date_created | date:'shortDate' " (ngModelChange)="user.date_created=$event" name="date_created"                                                 />

app.module.ts还包括自定义区域设置('de')

import { registerLocaleData } from '@angular/common';
import locale_de from '@angular/common/locales/de';

registerLocaleData(locale_de);

并包括在提供者中:

providers: [{
      provide: LOCALE_ID,
      useValue: 'de'
  }
],

我能做的是在输入中获得相当格式化的日期 . 用户看到[20. 12. 2017]这是一流的 . 但是,如果用户将输入更改为其他日期(手动),则模型上的值将从ISO格式更改为区域设置字符串:

来自API的模型,在输入元素更改之前:

user.date_created: '2017-12-20T12:03:00'

输入元素更改后的模型:

user.date_created: '23. 12. 2017'

属性date_created是.ts中模型上的日期类型 . 基本上,我也有与小数相同的问题 .

我尝试了Tomas Trajan的自定义格式化程序指令,它完全符合我的需要,除了语言环境是硬编码的 .

是否有任何推荐的方法如何使用语言环境格式设置双向数据绑定或如何将当前语言环境注入Formatter指令?

谢谢你的建议 .