Ngfor döngüsünde iki kez çalışan olay'ı tıklatın. açılı

0

Soru

Atlayamadığım ilginç bir problem buldum.

Bir tıklama olayı ile follwing * ngFor döngüsüne sahibim.

<label class="input-group" *ngFor="let status of statuses; trackBy: id"
    (click)="filterByCategory(status.name)">{{ status.name }}
    <span class="chip chip-icon" [attr.data-chip-state]="status.name">
    {{ partners | counter: status.name }}</span>
    <input type="checkbox" />
    <span class="checkmark"></span>
</label>

click olayı fn filterByCategory (), bir dizi nesneyi filtrelemek için bir diziden dize eklemekten veya kaldırmaktan sorumlu olan basit bir işlemdir.

  filterByCategory(category, event: Event) { 
    let verify = this.filterArr.includes(category);
   
    if (!verify) { 
      this.filterArr.push(category)
    } else {    
      let indexOfCategory = this.filterArr.indexOf(category);
      this.filterArr.splice(indexOfCategory, 1);
    } 
  
    this.filteredPartners = this.partners.filter(partner => {
      return this.filterArr.includes(partner.partner_status.name);
    }) 
  }

Olay tetiklendiğinde, iki kez çalışır ve ıf deyimi önce dizeyi ekler ve sonra kaldırır.

enter image description here

Bunu çözmenin bir yolu olan var mı?

Teşekkürler!

angular click events ngfor
2021-11-20 19:18:11
1

En iyi cevabı

1

Bağlandığın için olduğuna inanıyorum. click olay dinleyicisi label. Etikete tıklarsanız, olayı ilk kez tetiklersiniz, ancak onay kutusu tıklanır ve bir kez daha tetiklenir click etkinlik.

Çünkü kullanıyorsun. label burada-özgürce hareket edebilirsiniz click dinleyici için checkox. Yani sahip oldukların yerine, bunu şöyle yapabilirsin:

<label class="input-group" *ngFor="let status of statuses; trackBy: id">{{ status.name }}
<span class="chip chip-icon" [attr.data-chip-state]="status.name">
{{ partners | counter: status.name }}</span>
<input type="checkbox" (click)="filterByCategory(status.name)" />
<span class="checkmark"></span>
2021-11-20 19:37:54

Kesinlikle haklıydın! Aslında, giriş görüntülendiğinden beri bu bölüm aklımdan geçmedi: yok, etiketin açısal'ın kontrol değiştiğinden beri iki kez bile çalışmasını istediğini unuttum! Teşekkürler Kamlar!
cristian Oliveira

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................