ui-date expects your model to be the actual date object. In your case, this is a string. If you look at the console, you will see that angularUI actually informs you about this. Then he advises adding an additional ui-date-format tag with the specified date format with which your date string will be parsed into a date object.
In short, you need to configure your input as follows:
<input ui-date="{dateFormat: 'yy-mm-dd'}" ui-date-format="yy-mm-dd" ng-model="customer.contract_end_date"></input>
Working plunker .
source share