Boa tarde, Estou com um problema parecido com o deste tópico https://cursos.alura.com.br/course/spring-mvc-1-criando-aplicacoes-web/task/11454, contudo o meu return está correto
Uncaught TypeError: Cannot read property 'getDate' of undefined
at Function.dataParaTexto (DataHelper.js:7)
at model.contas.map.n (ContasView.js:21)
at Array.map (<anonymous>)
at ContasView._template (ContasView.js:18)
at ContasView.update (ContasView.js:35)
at ContasController.adiciona (ContasController.js:20)
at HTMLFormElement.onsubmit (index.html:16)
Contas Controller
class ContasController{
constructor(){
let $ = document.querySelector.bind(document);
this.inputNome = $('#nomeDaConta');
this.inputVencimento = $('#vencimento');
this.inputValor = $('#valor');
this.inputParcelas = $('#parcelas');
this._listaContas = new ListaContas();
this._contasView = new ContasView($('#contasView'));
this._contasView.update(this._listaContas);
}
adiciona(event){
event.preventDefault();
//let vencimento = new Date(this._inputData.value.replace(/-/g,','));
this._listaContas.adiciona(this._criaContas);
this._contasView.update(this._listaContas);
this._limpaFormulario();
}
_criaContas(){
return new Contas(
this.inputNome.value,
DataHelper.textoParaData(this._inputVencimento.value),
this.inputValor.value,
this.inputParcelas.value);
}
_limpaFormulario(){
this.inputVencimento.value = '';
this.inputNome.value = '';
this.inputValor = 0;
this.inputParcelas = 0;
this.inputNome.focus();
}
}
Contas view
class ContasView{
constructor(elemento){
this._elemento = elemento;
}
_template(model){
return `
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>Nome</th>
<th>Vencimento</th>
<th>Valor</th>
<th>Parcelas</th>
</tr>
</thead>
<tbody>
${model.contas.map(n => `
<tr>
<td>${n.nomeDaConta}</td>
<td>${DataHelper.dataParaTexto(n.vencimento)}</td>
<td>${n.valor}</td>
<td>${n.parcelas}</td>
`).join('')}
</tbody>
<tfoot>
</tfoot>
</table>
`;
}
update(model) {
this._elemento.innerHTML = this._template(model);
}
}
DataHelper
class DataHelper{
constructor(){
throw new Error('Está classe não pode ser instanciada');
}
static dataParaTexto(vencimento){
return `${vencimento.getDate()}/${vencimento.getMonth()+1}/${vencimento.getFullYear()}`;
}
static textoParaData(texto){
if(/\d{4}-\d{2}-\d{2}/.test(texto))
throw new Error('deve estar no formato aaaa-mm-dd');
return new Date(...texto.split('-').map((item, indice) => item - indice % 2));
}
}