Иона-дата-время связывают с эпохой - PullRequest
0 голосов
/ 10 мая 2018

У меня есть модель, которая требует дату / время в миллисекундах в формате Unix Epoch. Я пытался использовать интерфейс Момент, Дата | числовой как тип, и я не могу понять это правильно.

Я хочу, чтобы элемент управления отображался в удобочитаемом формате, а также средство выбора, но я хочу, чтобы модель с привязкой к данным была числовой. Я не могу использовать канал («Не может быть канал в выражении действия»). Должен ли я удалить двустороннюю привязку данных, перевести значение в функцию 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) и затем синхронизируется с базой данных mongodb через REST API nodejs. Он отображается только на этой html-странице, поэтому мне бы очень хотелось, чтобы он был везде числовым.

1 Ответ

0 голосов
/ 10 мая 2018

В качестве ввода для 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> 

date.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();
  }

}

page.ts

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

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

Рабочая StackBlitz

...