【发布时间】:2017-07-04 09:23:21
【问题描述】:
我有一个动态生成的带有多个 FormControl 输入字段的 Angular 2 FormGroup。一些输入是日期,它们作为 unix 时间戳从服务器获取。
我想做的是:
- 能够将 unix 时间戳转换为人类可读的形式, 当我的 FormGroup 被填充时,还有
- 翻译人类 当表单为 Unix 时间戳时,将日期表示为 已提交。
第 1 部分有点简单,像这样使用 Angular 的日期管道:
<input class="form-control" [formControlName]="question.key"
[value]="this.form.controls[this.question.key].value | date:'dd/MM/yyyy'">
其中 this.form 是对 FormGroup 的引用,this.question 是基于官方动态表单教程的自定义包装类:
https://angular.io/docs/ts/latest/cookbook/dynamic-form.html
尝试以这种方式更改日期输入是行不通的,因为管道会不断尝试转换输入值,因此如果不为管道“DatePipe”异常抛出无效参数,则输入不可用。
为了澄清,我使用FormGroup.patchValue() api 填写我的表单,并使用FormGroup.getRawValue() api 提交表单数据。
我尝试使用 Angular 2 日期选择器组件,但它们让我的巨大表单变得非常慢,所以我想在没有自定义日期选择器或任何 jQuery 相关小部件的情况下这样做。
提前致谢。
【问题讨论】:
标签: forms angular datepicker pipe