Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] erro na aula filtrando busca de passagem

Bom, meu console está indicando que há um erro na hora de passar o toisostring para o data ida e o datavolta. bem q eu achei estranho o meu visual studio code não sugerir a função qnd digitamos. Estou travado nessa parte e não consegui solucionar esse problema, até alterando na abertura do forms em vez de null colocando Date. Esses são os meus códigos e a imagem mostra os erros

obterDadosDeBusca(): DadosDeBusca {
    const dataIdaControl = this.obterControle<Date>('dataIda').value;
    const dadosBusca: DadosDeBusca = {
      pagina: 1,
      porPagina: 50,
      somenteIda: this.obterControle<boolean>('somenteIda').value,
      origemId: this.obterControle<number>('origem').value.id,
      destinoId: this.obterControle<number>('destino').value.id,
      tipo: this.obterControle<string>('tipo').value,
      passageirosAdultos:
        this.obterControle<number>('adultos').value,
      passageirosCriancas: this.obterControle<number>('criancas')
        .value,
      passageirosBebes: this.obterControle<number>('bebes').value,
      dataIda: dataIdaControl.value.toISOString(),
      conexoes: this.obterControle<string>('conexoes').value
    };

    const dataVoltaControl = this.obterControle<Date>('dataVolta');

    if (dataVoltaControl.value) {
      dadosBusca.dataVolta = dataVoltaControl.value.toISOString()
    }

    const conexoesControl = this.obterControle<number>('conexoes');
    if (conexoesControl.value) {
      dadosBusca.conexoes = conexoesControl.value;
    }

    return dadosBusca;
  }
const somenteIda = new FormControl(false, [Validators.required]);
  const dataVolta = new FormControl(null, [Validators.required]);

  this.formBusca = new FormGroup({
    somenteIda,
    origem: new FormControl(null, [Validators.required]),
    destino: new FormControl(null, [Validators.required]),
    tipo: new FormControl('Econômica'),
    adultos: new FormControl(1),
    criancas: new FormControl(0),
    bebes: new FormControl(0),
    dataIda: new FormControl(null, [Validators.required]),
    dataVolta,
  });

Erro toISOString()

imagem do código que levanta o erro no console

Aqui está o meu código no git para qm estiver na dúvida: https://github.com/acastron22/jornada-milhas

não deixem de executar junto ao backend que está no git do curso nesse link: https://github.com/viniciosneves/jornada-milhas-api

vlw pela atenção gente!

2 respostas
solução!

Ariel esse erro acontece pq você está chamando o método toISOString() duas vezes: uma vez quando está atribuindo o valor à variável dataIda e outra vez quando está atribuindo o valor à variável dataVolta.

Para corrigir esse problema, você pode remover o .value após dataIdaControl e dataVoltaControl na função obterDadosDeBusca(). Dessa forma, você estará passando diretamente o objeto Date para o método toISOString().

const dataIda = this.obterControle<Date>('dataIda').value;
const dataVolta = this.obterControle<Date>('dataVolta').value;

const dadosBusca: DadosDeBusca = {
  // outros atributos...
  dataIda: dataIda.toISOString(),
};

if (dataVolta) {
  dadosBusca.dataVolta = dataVolta.toISOString();
}

Com essa alteração, o erro deve ser resolvido e o toISOString() será chamado corretamente.

Abs.

Era exatamente isso! Agradeço a ajuda e a atenção. Não percebi que estava puxando o .value duas vezes Obrigado!