'How to format date input into custom date format using directive in angular
I used following example example link to format user input text into date but the date format is not matching my requirement. I need date format as MM/DD/YYYY, currently getting as DD/MM/YYYY. Any help will be appreciable.
Example Code -:
HTML-
<input type="date" formControlName="birthday" class="form-control">
Directive:
import { Directive, ElementRef, HostListener, Renderer2, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
@Directive({
selector: 'input[type=date][ngModel], input[type=date][formControl]',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => DateInputConverter),
multi: true
}]})
export class DateInputConverter implements ControlValueAccessor {
@HostListener('blur', []) onTouched: any = () => { };
@HostListener('input', ['$event']) onChange: any = () => { };
private valueType: 'value' | 'valueAsDate' = 'value';
constructor(private renderer: Renderer2, private elementRef: ElementRef) { }
registerOnTouched(fn: () => void) {
this.onTouched = fn;
}
registerOnChange(fn: (value: any) => void) {
this.onChange = (event: any) => fn(event.target[this.valueType])
}
writeValue(value: Date | string) {
this.valueType = typeof value === 'string' ? 'value' : 'valueAsDate';
this.renderer.setProperty(this.elementRef.nativeElement, this.valueType, value);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
