Angular Material datepicker 将时间戳设置为表单控件值

标签 angular angular-material2

                <input
                  [value]="question.timestampToMoment(row.controls[column.name].value)"
                  [formControlName]="column.name"
                  [required]="column.required"
                  matInput
                  [matDatepicker]="picker"
                  (dateChange)="question.onDateChange($event)"
                  placeholder="Choose a date"
                />

我要 FormControl附在此 datepicker将时间戳作为值,以便将时间戳发送回后端。然后在设置这个datepicker的值当值从后端返回时,我需要将其转换回 moment来自时间戳的对象。

我想timestampToMoment看起来像:return moment(value * 1000)
我不知道如何实现 onDateChange或任何其他方式来完成这项工作。 datepicker用途 moment.js .

最佳答案

正如@Eliseo 在评论中提到的,这里的诀窍是不包括 FormControldatepicker输入,并使用 dateChange手动更改 FormControl 的值的事件. valuedatepicker反过来可以通过将时间戳传递给函数来设置。

<input
  [value]="timestampToMoment(form.controls[key].value)"
  [required]="required"
  matInput
  [matDatepicker]="picker"
  (dateChange)="onDateChange($event, form.controls[key])"
  placeholder="Choose a date"
/>

timestampToMoment(value: number): Moment {
  return moment(value * 1000);
}

onDateChange(event: MatDatepickerInputEvent<any>, control: AbstractControl): void {
  control.setValue(event.value.valueOf() / 1000);
}

关于Angular Material datepicker 将时间戳设置为表单控件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303310/

相关文章:

Angular 7 生产构建失败

Angular 单元测试: Access template variable

angular - 设置 p-dropdown 的滚动高度会引发错误

angular - 是否可以检索 Angular 4 Material Theme 的背景和前景调色板?

angular - 加速 Angular Material 自动完成或替代方案

angular-material2 - MatDatepickerFilter-筛选器函数无法访问类变量

html - 如何在调整窗口大小(缩小)时将工具栏转换为侧边导航栏?

带有 Typescript 的 Angular2 - 加载 angular2/平台/浏览器时出错

angular - 在静态和非 SPA Web 应用程序中使用 Angular 2 组件

css - Angular 2 Flex 布局右对齐图标