How to use ion-datetime?

Hi,

I’m quite confused about ion-datetime. I’m using ion-datetime in a wrapper component called ko-datetime to keep settings generic across the app because i could not figure out a way to globally set translations for months and days.

The problem i’m struggling with goes into the 2 way binding. I have to capture the “done event” myself to emit the change via the an @Output like this.

import { Component, OnInit, Input, Output, EventEmitter, ApplicationRef } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Component({
  selector: 'ko-datetime',
  templateUrl: './ko-datetime.component.html',
  styleUrls: ['./ko-datetime.component.scss']
})
export class KoDatetimeComponent implements OnInit {
  @Input() date;
  @Output() dateChange = new EventEmitter<string>();
  @Input() displayFormat;

  customMonthNames;

  constructor(public translate: TranslateService, public appRef: ApplicationRef) { }

  ngOnInit() {}

  getCustomMonthNames(){
    this.customMonthNames = [];

    this.customMonthNames.push(this.translate.instant('months.full.jan'));
    this.customMonthNames.push(this.translate.instant('months.full.feb'));
    this.customMonthNames.push(this.translate.instant('months.full.mar'));
    this.customMonthNames.push(this.translate.instant('months.full.apr'));
    this.customMonthNames.push(this.translate.instant('months.full.may'));
    this.customMonthNames.push(this.translate.instant('months.full.jun'));
    this.customMonthNames.push(this.translate.instant('months.full.jul'));
    this.customMonthNames.push(this.translate.instant('months.full.aug'));
    this.customMonthNames.push(this.translate.instant('months.full.sep'));
    this.customMonthNames.push(this.translate.instant('months.full.oct'));
    this.customMonthNames.push(this.translate.instant('months.full.nov'));
    this.customMonthNames.push(this.translate.instant('months.full.dec'));

    return this.customMonthNames;
  }

  getCustomPickerOptions(){
    return {
      buttons: [{
        text: this.translate.instant('general.cancel'),
        handler: () => {
          return false;
        }
      },{
        text: this.translate.instant('general.done'),
        handler: (value) => {
          this.date = value;
          this.dateChange.emit(value);
          this.appRef.tick();
        }
      }]
    }
  }
}

When i capture the “done event” like this it no longer changes the input value unless i put in the ApplicationRef.tick() function. Which seems a bit dirty to me but it works.

Also the value being returned is a object with month, day, year values but i was under the impression a iso string was going to be returned. This way i can’t pre define a value myself.

Maybe i’m going at this entirely wrong so if anyone could help me out here ?

With best regards,
Robin