Я создал специальную директиву, которая добавляет / удаляет селектор классов с событием щелчка. Должно быть довольно просто, и все работает нормально, если я использую директиву вне цикла ngFor. Директива состоит из приведенного ниже кода:
import { Directive, HostBinding, HostListener, Input } from '@angular/core';
@Directive({
selector: '[appFav]'
})
export class FavDirective {
@HostBinding('class.isFav') isFav:boolean = false;
@HostListener('click') onClick() {
this.isFav = !this.isFav;
console.log('clicked');
}
@Input() set appFav(val:boolean) {
this.isFav = val;
}
}
И я пытаюсь использовать эту директиву для кнопки внутри компонента Cards. Итак, внутри html-шаблона компонента Cards код кнопок выглядит так:
<div class="favBtn" appFav><span class="material-icons">favorite_border</span></div>
Это работает, когда я использую компонент сам по себе, но когда я генерирую несколько карточек с помощью цикла ngFor, как показано ниже, декоратор, похоже, больше не работает.
<custom-card class="card" *ngFor="let card of getCards()"></custom-card>
Свойство isFav в директиве фиксировано, а селектор класса .isFav не добавляется, когда я проверяю кнопку. Хотя сообщения console.log отображаются правильно, это означает, что метод onClick в директиве действительно выполняется.
Любая помощь приветствуется. Заранее спасибо.