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

eu informo os dados porém ao clicar em incluir não inclui os seus respectivos valores. Não da erro de compilação e também não da erro na execução aparece somente duas mensagens de alerta...

Mensagens de alerta


Expression
​
not available

DevTools failed to load SourceMap: Could not load content for file:///C:/Clairton/Cursos%20ALURA/Forma%C3%A7%C3%A3o%20Framework%20Angular/Curso%20TypeScript/alurabank/app/css/bootstrap.css.map: System error: net::ERR_FILE_NOT_FOUND
DevTools failed to load SourceMap: Could not load content for file:///C:/Clairton/Cursos%20ALURA/Forma%C3%A7%C3%A3o%20Framework%20Angular/Curso%20TypeScript/alurabank/app/css/bootstrap-theme.css.map: System error: net::ERR_FILE_NOT_FOUND

12
12
class NegociacaoController {

    private _inputData: JQuery;
    private _inputQuantidade: JQuery;
    private _inputValor: JQuery;
    // private _negociacoes: Negociacoes = new Negociacoes();
    // ou podemos remover a declaração do tipo pois o TS entende que estamos instanciando do tipo Negociacoes
    private _negociacoes = new Negociacoes();
    private _negociacoesView = new NegociacoesView('#negociacoesView');
    private _mensagemView = new MensagemView('#mensagemView');

    constructor() {
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        this._negociacoesView.update(this._negociacoes);
    }

    adiciona(event: Event) {

        event.preventDefault();

        const negociacao = new Negociacao(
            new Date(this._inputData.value.replace(/-/g, ',')), 

            parseInt(this._inputQuantidade.value),
            parseFloat(this._inputValor.value)
        );

        //console.log(negociacao);
        // --> TESTES <--
        this._negociacoes.adiciona(negociacao);

        // apaga o array
        // this._negociacoes.paraArray().length = 0; // acabou de apagar!

        // não tem dado para iterar! -->
        /*
        // imprime a lista de negociações encapsulada 
        console.log(this._negociacoes.paraArray());
        */
        /*
        this._negociacoes.paraArray().forEach(negociacao => {
            console.log(negociacao.data);
            console.log(negociacao.quantidade);
            console.log(negociacao.valor);
        });
        */
       this._negociacoesView.update(this._negociacoes);
       this._mensagemView.update('Negociação adicionada com sucesso.');
    }
}
// declare var $: any;

abstract class View<T> {

    // protected _elemento: Element;
    // tornando a class View do tipo generics não e mais nececssário deixar a propriedade da classe 
    // _elemento como protected fazendo o encapsulamento no modo privade deixando-a mais segura.
    // e acessivel a metodos somente desta clase.

    private _elemento: JQuery; //any;

    constructor(seletor: string) {

        this._elemento = $(seletor);
    }

    update(model: T): void{
        this._elemento.html(this.template(model));
    }

    abstract template(model: T): string;
    /* {

        throw new Error('Você deve implementar o método template');
    } */
}
3 respostas

Fala ai Clairton, tudo bem? Falando assim apenas vendo parte dos códigos é bem complicado procurar o problema.

Sendo assim, posso te pedir um favor? Compartilha o projeto completo comigo, assim eu consigo simular o problema e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

solução!

eu comparei o código com o projeto do original fiz as devidas alterações e voltou ao normal vlw.

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

Abraços e bons estudos.