2017-02-13 7 views
1

Я использую primeng datatable в одном проекте. Я пытаюсь получить сумму в нижнем колонтитуле группировки строк DataTable. Суммирование должно проводиться во время редактирования данных и ввода новых данных.Primeng datatable. Рассчитать количество и рассчитать его в нижнем колонтитуле

функция Folow вычислить сумму:

sumNum1: number; 
calculateGroupTotal1(sectionId: number) { 
    this.sumNum1 = this.model.Register10Data.map(c => c.SectionId === 1 ? c.Num1 : 0) 
     .reduce((sum, current) => +sum + current); 

    console.log(this.sumNum1); 

    return this.sumNum1; 
} 

SectionId это значение с помощью данных, которые группировка.

В нижнем колонтитуле я называю эту функцию. Я сделал это первый пример отсюда - http://www.primefaces.org/primeng/#/datatable/rowgroup

<template pTemplate="rowgroupfooter" let-rowData> 
<td style="text-align:left">Sum</td> 
<td style="text-align:center">X</td> 
<td style="text-align:center">X</td> 
<td>{{calculateGroupTotal1(rowData['SectionId'])}}</td> 
<td></td> 
<td></td> 
<td></td> 
</template> 

Почему в сводном поле я получаю конкатенацию строк и не получить сумму? Возможно, кто-то сделал такое? Задача довольно тривиальная, но я не знаю, как использовать этот элемент управления.

ответ

0

Я думаю, проблема в том, что значения, которые вы используете, являются строками. Чтобы выполнить вычисления, вам нужно указать значение на число.

Вы можете использовать let numericalSum = Number(sum); или let numericalSum = +sum;, как описано в this answer.

+0

Посмотрите на изменения. Консоль также возвращает конкатенацию вместо суммирования. – Seva

+1

Думаю, вам нужно это '(+ sum) + (+ current)' –

+0

Спасибо. Это работает!!! – Seva