У меня проблема с директивой атрибута.Я следовал инструкции .
, сгенерированной с использованием CLI, поэтому я использовал ng g directive <directivename>
и намеренно помещен на верхний уровень вместе с app.module.ts
.
My app.module.ts
выглядит следующим образом (и я, должно быть, пропустил весь импорт из-за собственных названий модулей):
// Directives
import { EventhoverDirective } from './eventhover.directive';
@NgModule({
declarations: [
// all the relevant component inputs are here
EventhoverDirective
],
imports: [
// modules are here
],
providers: [
// providers are here
],
bootstrap: [AppComponent]
})
export class AppModule { }
Сама директива выглядит так:
import { Directive, HostListener, OnInit, Renderer2, ElementRef } from '@angular/core';
@Directive({
selector: '[appEventhover]'
})
export class EventhoverDirective implements OnInit {
constructor(private el: ElementRef, private renderer: Renderer2) { }
ngOnInit() {
console.log('Directive called');
}
@HostListener('mouseenter') onMouseEnter() {
this.highlight('blue');
}
@HostListener('mouseleave') onMouseLeave() {
this.highlight(null);
}
highlight(color: string) {
this.renderer.setStyle(this.el.nativeElement, 'color', color);
}
}
И я использую его внутри HTML следующим образом:
<div class="container top-spacer">
<div class="row text-center" >
<div appEventhover class="col event" *ngFor="let event of eventList" (click)="storeEvent(event.job)">
<img class="img-responsive" src="{{backendRoute}}/{{event.track_image_off}}">
<p > {{event.name}} </p>
</div>
</div>
</div>
Однако он не работает.Это даже не выдает ни ошибки, ни чего-либо еще.Что я могу делать не так?
Заранее благодарю за помощь.