Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Template dinâmico

Bom dia,

Não cosigo entender pq o forEach não se comporta igual o map, uma vez que eu retorno uma String com as tags.

    _template(model){

        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>

                    ${model.negociacoes.map(n => 

                        `<tr>
                          <td>${DateHelper.dataParaTexto(n.data)}</td>
                          <td>${n.quantidade}</td>
                          <td>${n.valor}</td>
                          <td>${n.volume}</td>
                        </tr>

                        `
                    ).join('')}


                    ${model.negociacoes.forEach(n => {

                        return `
                        <tr>
                        <td>${DateHelper.dataParaTexto(n.data)}</td>
                        <td>${n.quantidade}</td>
                        <td>${n.valor}</td>
                        <td>${n.volume}</td>
                        </tr>
                      `}

                    )}

                    </tbody>

             </table>
        `;
    }
1 resposta
solução!

Atila, boa tarde!

Eles não se comportam igual, pois ao contrário do map() o forEach() não possui um retorno de array, o retorno do map() cria uma nova array, já o forEach serve para executar alguma função diretamente em cada array.

Como solução você pode tentar fazer inserir no DOM pra cada iteração, ou usar o map() por praticidade. Abaixo vou deixar um exemplo onde você irá conseguir entender como o seu sistema entende o retorno tanto do map() quanto do forEach

console.log(`${[1,2,3,4,5,6,7,8,9].map(n => {
    return n;
})}`);
RETORNO: 1,2,3,4,5,6,7,8,9
-----------------------------------------------
console.log(`${[1,2,3,4,5,6,7,8,9].forEach(n => {
    return n;
})}`);
RETORNO: undefined

Espero ter ajudado e bons estudos!