Converter string de data para date em AngularJS


Algumas vezes podemos querer utilizar um dado do back-end para um componente de date sem usar o ajax conforme abaixo.

<input type="date" name="data" class="form-control" ng-model="data" ng-init="data=<?php echo $data;?> >

Porém este código irá retornar o erro abaixo:

Expected `0000-00-00` to be a date

Isso acontece porque em um input do tipo date o angular não aceita que seja string e erpara que seja um date do javascript.

Para resolver este problema você deve criar uma função em seu controle para realizar a conversão.

$scope.converteData = function(string){
    var array_data = string.split('-');
    var data = new Date(array_data[0], array_data[1]-1, array_data[2]);
    return data;
};

Agora chame a função em seu html da seguinte forma:

<input type="date" name="data" class="form-control" ng-model="data" ng-init="data=converteData('<?php echo $data;?>') >

Não esqueça das aspas simples em torno da tag do back-end