angulardatepickerangular2-ngmodelangular-formsngx-bootstrap

How to change the date format in the datepicker of Angular ngx-bootstrap inside a form


Using ngx-bootstrap Datepicker in an Angular 4 application,

I know that normally you can specify the date format this way:

<input id="from" name="from"
       bsDatepicker [(bsValue)]="myModel"
       value="{{ myModel | date:'yyyy-MM-dd'}}">

but this time I'm inside a template-driven Angular form, so my input is not bound to a variable like myModel in the example above, but it's just bound to the form:

<input id="from" name="from"
       bsDatepicker ngModel>

so how can I specify the date format in this case?

Edit: it looks like that a way to achieve this is by creating a new variable newVar inside the component and then binding it with [(bsValue)]="newVar":

<input id="from" name="from"
       bsDatepicker ngModel
       [(bsValue)]="newVar"
       value="{{ newVar | date:'yyyy-MM-dd' }}">

However I wonder if there is a better solution.


Solution

  • [(bsValue)] is always available for use with bsDatepicker, will it be input field or not

    if you want to change format of only one field then

    [(bsValue)]="newVar" value="{{ newVar | date:'yyyy-MM-dd' }}" is fine

    bsDatepicker has integration with input fields and forms, this should work for you:

    <input name="from" bsDatepicker [(ngModel)]="newVar">

    and you can globally change format of date in input's value via config

    https://github.com/valor-software/ngx-bootstrap/blob/development/src/datepicker/bs-datepicker.config.ts#L31

    or via [bsConfig]="{dateInputFormat: 'yyyy-MM-dd'}" on element with bsDatepicker

    note: there is currently an issue (v1.9.2) with L format, it`s always uses en-us locale