Ibanez1408
Ibanez1408

Reputation: 5058

Populate input datetime-local in Angular

I need to put a default value in my input datetime-local but for some reason it is not populated in angular. Please tell me what I need to do to make this right. My code is below

<!--Completion Date-->
<div class="form-group">
    <input
      formControlName="completionDate"
      type="datetime-local"
      id="completionDate"
      placeholder="yyyy-MM-ddTHH:mm:ss"
      [min]="date"
      class="form-control"
      required
    />
</div>

populateDate(): string {
    this.dateObj = new Date();
    this.month = this.dateObj.getUTCMonth() + 1;
    this.day = this.dateObj.getUTCDate();
    this.year = this.dateObj.getUTCFullYear();

    return `${this.year}-${this.month}-${this.day}`;
}

createTroubleTicketForm() {
    this.troublTicketForm = this.fb.group({
      ttNum: [null, Validators.required],
      status: [null, Validators.required],
      completionDate: [null],
      incident: [null, Validators.required],
      rootCause: [null, Validators.required],
      resolution: [null],
      category: [null, Validators.required],
      plazaCode: [null, Validators.required],
      laneNum: [null, Validators.required],
      reportedBy: [null],
      helpDeskAgent: [null, Validators.required],
      assignedToTier: [null],
      ticketCreated: [this.populateDate(), Validators.required],
      remarks: [null]
    });
}

Upvotes: 0

Views: 7878

Answers (1)

Akber Iqbal
Akber Iqbal

Reputation: 15031

You'd need to convert date into ISO format before it could be assigned via [ngModel];

relevant TS:

  completeDate: Date;
  localCompleteDate: string;
  constructor() {
    this.completeDate = new Date();
    this.localCompleteDate = this.completeDate.toISOString();
    this.localCompleteDate = this.localCompleteDate.substring(0, this.localCompleteDate.length - 1);
  }

relevant HTML:

<input
  type="datetime-local"
  id="completionDate"
  [ngModel] = "localCompleteDate"
  placeholder="yyyy-MM-ddTHH:mm:ss"
  [min]="date"
  class="form-control"
  required
/>
<br/>
Date: {{completeDate | date:'short'}}
<br/>
ISO Date: {{ localCompleteDate }}

check complete working stackblitz here

Upvotes: 4

Related Questions