1
resposta

[Dúvida] Código nao apresenta erro porem nao roda o "incluir"

(Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Olá! Quando eu tento incluir uma negociação recebo este erro. O projeto nao apresenta nenhum erro em tempo de desenvolvimento porém quando eu executo o botão incluir recebo esse erro. O botão importar esta funcionando normalmente.

Nao consegui encontrar a falha apesar de bem explicada.

negociacao-controller.ts

import { domInjector } from "../decorators/dom-injector.js";
import { inspect } from "../decorators/inspect.js";
import { logarTempoDeExecucao } from "../decorators/logar-tempo-de-execucao.js";
import { DiasDaSemana } from "../enums/dias-da-semana.js";
import { Negociacao } from "../models/negociacao.js";
import { Negociacoes } from "../models/negociacoes.js";
import { NegociacoesService } from "../services/negociacoes-service.js";
import { MensagemView } from "../views/mensagem-view.js";
import { NegociacoesView } from "../views/negociacoesView.js";

export class NegociacaoController {
   @domInjector('#data')
   private inputData: HTMLInputElement;
   @domInjector('#quantidade')
   private inputQuantidade: HTMLInputElement;
   @domInjector('#valor')
   private inputValor: HTMLInputElement;
   private negociacoes = new Negociacoes();
   private negociacoesView = new NegociacoesView('#negociacoesView');
   private mensagemView = new MensagemView('#mensagemView');
   private negociacoesService = new NegociacoesService();

   constructor() {
      this.negociacoesView.update(this.negociacoes);
   }
   @inspect()
   @logarTempoDeExecucao()
   public adiciona(): void {

      const negociacao = Negociacao.criaDe(
         this.inputData.value,
         this.inputQuantidade.value,
         this.inputValor.value
      );

      if (!this.ehDiaUtil(negociacao.data)) {
         this.mensagemView.update('Apenas nogociações em dias úteis sao permitidas!')
         return;
      }

      this.negociacoes.adiciona(negociacao);
      this.limparFormulario();
      this.atualizaView();

   }

   public importaDados(): void {
      this.negociacoesService
         .obterNegociacoesDoDia()
         .then(negociacoesDeHoje => {
            for (let negociacao of negociacoesDeHoje) {
               this.negociacoes.adiciona(negociacao);
            }
            this.negociacoesView.update(this.negociacoes);
         });
   }


   private ehDiaUtil(data: Date) {
      return data.getDay() > DiasDaSemana.DOMINGO
         && data.getDay() < DiasDaSemana.SABADO;
   }

   private limparFormulario(): void {
      this.inputData.value = '';
      this.inputQuantidade.value = '';
      this.inputValor.value = '';
      this.inputData.focus();
   }

   private atualizaView(): void {
      this.negociacoesView.update(this.negociacoes);
      this.mensagemView.update("Negociações adicionada com sucesso");
   }

}
1 resposta

Olá,

Acho que seu problema ta ligado aos decorators. Quando você passou por essa aula foi certinho?

Não vi no seu código a parte do log com a string escapada, que é o que foi passado nessa aula que você abriu a dúvida.

O erro parece ser ao buscar o dado no formulario. Então pode ser no app.ts, ou no decorator do dom-injector.js