我创建了一个自定义指令,该指令通过单击事件添加/删除类选择器。应该很简单,只要我在 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 组件内的按钮上使用该指令。因此,在 Cards 组件的 html 模板中,按钮代码如下所示:
<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 方法确实运行了。
任何帮助将非常感激。提前致谢。