Вычислить строки с включенным флажком и отобразить в другой таблице angular

#javascript #html #jquery #angular #typescript

#javascript #HTML #jquery #angular #typescript

Вопрос:

У меня есть две таблицы полностью Table1 и table2. Таблица1 заполнена данными из сервиса. В таблице 1 у меня есть такие столбцы, как кол-во, Цена и флажок. В столбцах с флажками у меня есть флажки в качестве значений. Кол-во и цена имеют число в качестве значений в table2 У меня есть столбцы с именами Кол-во и цена

Фотографии таблиц 1 и 2

ТАБЛИЦА1

ТАБЛИЦА2

Теперь скажите, если я нажму флажок в строке 1,2,4 в table1. Поэтому, если вы возьмете столбец Qty в table1, все значения Qty в строке 1,2,4 должны быть добавлены и отображаться в столбце qty в table2 как одно значение. То же самое касается столбца цены. (Пример 6,4,2 — это значения столбца qty в строке 1,2,4, поэтому добавьте (6 4 2 ) и показать общее количество в первой строке столбца кол-во в таблице 2

ОТМЕЧЕНЫ СТРОКИ 1, 2, 4

Я пытаюсь сделать это в течение двух дней, не мог найти решение.Я знаю, что это очень сложно. Пожалуйста, помогите мне, если сможете.

STACKBLITZ: https://stackblitz.com/edit/angular-ivy-coydaf?file=src/app/app.component.ts

Комментарии:

1. Создайте доступный для выполнения фрагмент

2. Я прикрепил stackblitz already.stackblitz.com/edit /… @jqueryHtmlCSS

3. Покажите свой HTML.

4. Я слишком часто показывал свой HTML-код в таблицах stackblitz.2. Во второй таблице будут только столбцы

5. Привет, вам нужно сделать это с помощью jquery / js?

Ответ №1:

Добавьте переменную на уровне компонента, которая будет содержать общее количество.

 totalCount: any;
 

Инициализируйте его в ngOnInit событии.

 this.totalCount = {qty:0,value:0};
 

при onChange событии флажка вызовите приведенную ниже функцию, которая будет добавлять / вычитаться на основе проверенного статуса.

 getTotal(event,item) {
    if (event.target.checked) {
      this.totalCount.qty =  this.totalCount.qty   item.qty;
      this.totalCount.value =  this.totalCount.value   item.value;
    } else {
      this.totalCount.qty =  this.totalCount.qty - item.qty;
      this.totalCount.value =  this.totalCount.value - item.value;
    }
}
 

Отобразите значение следующим образом.

 <tr *ngIf="!(totalCount.qty == 0 || totalCount.value == 0)">
    <td>1</td>
    <td>{{totalCount.qty}}</td>
    <td>{{totalCount.value}}</td>
</tr>
 

Работает StackBlitz:-

https://stackblitz.com/edit/angular-ivy-349pwn?file=src/app/app.component.html

Комментарии:

1. Привет, спасибо за это, я пытаюсь сохранить кнопку ниже. Так что изменение во второй таблице отображается только после нажатия кнопки. Когда я попытался, я не смог получить доступ к списку и значению события, как это делал u перед использованием onchange. Я также сделал onclick в кнопке, и в этом я вызвал getTotal(), который вы сделали, используя это, getTotal() внутри кнопки onclick, и это тоже не сработало. есть идеи?

2. Это не сработает, попробуйте понять логику. onChange предназначен для каждого элемента, как он может работать при нажатии кнопки.

3. Если вы хотите сделать это одним нажатием кнопки, вам нужно изменить логику функции getTotal

4. Если я использую нажатие кнопки, как я буду получать доступ к значениям $event и list, если я собираюсь оставить эту кнопку за пределами таблицы?

5. В этом случае вы не можете получить доступ к событию.