0

我有一个模型,它要求日期/时间以 Unix Epoch 格式为毫秒。我曾尝试使用 Moment 界面 Date | 数字作为类型,我似乎无法正确理解。

我希望控件以人类可读的格式显示,选择器也一样,但我希望数据绑定模型是数字的。我不能使用管道(“动作表达式中不能有管道”)。我应该删除双向数据绑定,转换 changeModel 函数中的值并使用类似函数填充 person.date_of_birth 吗?

.html

<ion-datetime displayFormat="MMM DD, YYYY" pickerFormat="MMM DD, YYYY" (ngModelChange)="changeModel($event)" [(ngModel)]="person.date_of_birth"></ion-datetime>

.ts:

let person={name: string, date_of_birth: numeric};

该模型被写入移动设备上的本地数据库(pouchdb/sqlite),然后通过 nodejs REST API 与 mongodb 数据库同步。它只显示在这个 html 页面上,所以我真的希望它在其他任何地方都是数字。

4

1 回答 1

1

作为您的输入ion-datetime,您可以使用public yourDate: string = new Date().toISOString();. 所以这是您要绑定到您的ion-datetime.

如果你想有另一种格式,你可以做这样的事情new Date(yourDate).getTime()。如果你有这个ISOString,你总是可以把它解析回一个Date对象。

更新

使用管道和格式功能。

在这里,我们有一个使用我的自定义管道的单向数据绑定,它将date数字日期格式化为ISOString. 该(ngModelChange)事件是“其他方式”绑定,即分配回一个数值date_of_birth(格式是自定义函数)。

page.html

<ion-datetime displayFormat="MMM DD, YYYY" 
    (ngModelChange)="date_of_birth=format($event)" 
    [ngModel]="date_of_birth | date"></ion-datetime> 

日期.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'date'
})
export class DatePipe implements PipeTransform {

  transform(value: any, args?: any): any {
    return new Date(value).toISOString();
  }

}

页面.ts

date_of_birth: number = new Date().getTime();

format(val) {
  return new Date(val).getTime();
}

工作堆栈闪电战

于 2018-05-10T10:12:35.283 回答