Подсчет выбранных флажков без события (угловой) - PullRequest
0 голосов
/ 19 февраля 2019

Можно ли считать выбранные флажки, не запуская событие?

У меня есть динамический список элементов, и я хочу показать пользователю общее количество выбранных в прямом эфире.

<div *ngFor="let item of items; let i = index" class="form-check">
 <input type="checkbox" class="form-check-input" id="itemCheck{{i}}" name="item{{i}}"[(ngModel)]="item.checked" />
  <label class="form-check-label" for="itemCheck{{i}}">{{item.Name}}</label>
</div>

{{item.checked.length}}

Ответы, которые я видел, основаны на событиях.

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Если по какой-либо причине вы вообще не можете использовать события, вам необходимо автоматически обновлять информацию с интервалом:

public selectedCount = 0;
public ngOnInit() {
    interval(500) // time in ms
    .subscribe(() => this.setItemCount);
}

public setItemCount() {
    this.selectedCount = this.items.length;
}

Это будет обновлять счет каждые 500 мс.

Конечно, вы можете вызывать setItemCount в любое время, например, когда происходит событие.

0 голосов
/ 19 февраля 2019

Если какое-либо значение изменяет жизненный цикл, запускается ngDocheck, и мы можем сделать обнаружение изменений, сравнивая предыдущее и новое значение

В компоненте

ngDoCheck(){
    let count = this.items.filter(i=>i.checked).length
    if(count != this.length){
      this.length=count
    }
  }

В html

<input type='text' [(ngModel)]="name" name='name' />
{{name}}
<div *ngFor="let item of items; let i = index" class="form-check">
 <input type="checkbox" class="form-check-input" id="itemCheck{{i}}" name="item{{i}}"[(ngModel)]="item.checked" />
  <label class="form-check-label" for="itemCheck{{i}}">{{item.Name}}</label>
</div>

{{length}}

пожалуйста, отошлите это ссылка на стек

0 голосов
/ 19 февраля 2019

Что ж, если вы хотите, чтобы Angular заметил изменение состояния флажка типа ввода, вы можете использовать события или опрос для изменений, например, проверять каждые 500 мс, если были какие-либо изменения в состоянии выбора флажков типа ввода, хотя не рекомендуется опрашивать.Шаблон на основе событий является рекомендуемым.Почему вы не можете использовать события?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...