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

Uncaught TypeError: view.update is not a function

Encontrei mais um problema ao tentar chamar o método update() no console do navegador, conforme o final da aula "Apresentando Modelo para o usuário", aula 03 do Curso de TypeScript.

quando executo a chamada ao método recebo a seguinte mensagem: "VM446:1 Uncaught TypeError: view.update is not a function"

Classe NegociacoesView.ts

class NegociacoesView {

    private _elemento: Element;

    constructor(seletor: string) {

        this._elemento = document.querySelector(seletor);
    }

    update(): void {
        this._elemento.innerHTML = this.template();
    }

    template(): string {

        return `
        <table class="table table-hover table-bordered>
            <thead>
                <tr>
                    <th>DATA</th>
                    <th>QUANTIDADE</th>
                    <th>VALOR</th>
                    <th>VOLUME</th>
                </tr>
            </thead>

            <tbody>
            </tbody>

            <tfoot>
            </tfoot>
        </table>       
        `;
    }
}

classe: NegociacoesController.ts

class NegociacaoController {

    private _inputData: HTMLInputElement;
    private _inputQuantidade: HTMLInputElement;
    private _inputValor: HTMLInputElement;
    private _negociacoes = new Negociacoes();
    private _negociacoesView = new NegociacoesView('#negociacoesView');

    constructor() {

        this._inputData = <HTMLInputElement>document.querySelector('#data');
        this._inputQuantidade = <HTMLInputElement>document.querySelector('#quantidade');
        this._inputValor = <HTMLInputElement>document.querySelector('#valor');
        this._negociacoesView.update();
    }

    adiciona(event: Event) {

        event.preventDefault();

        const negociacao = new Negociacao(
            new Date(this._inputData.value.replace(/-/g, ',')),
            parseInt(this._inputQuantidade.value),
            parseFloat(this._inputValor.value)
        );

        this._negociacoes.adiciona(negociacao);
    }
}
4 respostas

Revisei toda a Apresentação 04 da aula 03, e evolui a mensagem de erro... agora o retorno da console do navegador é: "undefined".

Mas segue sem apresentar a tabela no navegador.

Fala aí Tiago, tudo bem? No seu HTML existe um elemento com o id que você está informando? No caso negociacoesView.

A sua classe NegociacaoController está sendo criada? Pois o código só será executado no construtor dela.

Olhando o código parece estar ok.

Espero ter ajudado.

solução!

Grato pelo retorno Matheus.

Infelizmente eu não consegui identificar onde estava ocorrendo o problema. Inclusive discuti e verifiquei junto com meu colega de empresa que está realizando o mesmo curso e não encontramos onde poderia estar causando o erro.

Por via das dúvidas, utilizei o bom e velho método de Lavoisier... ctrl + c ctrl + v do código da página e consegui fazer funcionar. Algum caractere não reconhecido ou alguma letrinha invertida foi perdida no meio do código.

Mas já seguimos adiante com o curso. Obrigado.

Magina, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.