Wie würde ich bei der Verwendung von NgClass innerhalb einer benutzerdefinierten Attribut-Direktive vorgehen, um die CSS-Klasse der Hauptelemente zu ändern?Angular 2.4.0 Target NgClass innerhalb der Attribut-Direktive
Wenn ich so etwas wie diese:
@Component({
selector: 'my-app',
template: `
<div>
<div class="box" myDir [ngClass]="{'blue': blue, 'red': red}"> </div>
</div>
`,
});
Und dann innerhalb dieser myDir Richtlinie, etwa so:
import { Directive, HostListener, OnInit } from '@angular/core';
@Directive({
selector: '[myDir]'
})
export class MyDirDirective {
blue: boolean;
red: boolean;
constructor() {
}
ngOnInit() {
}
@HostListener('mouseenter', ['$event'])
onMouseEnter(event) {
event.preventDefault();
event.stopPropagation();
this.blue = true;
this.red = false;
console.log('mouseenter');
}
@HostListener('mouseleave', ['$event'])
onMouseLeave(event) {
event.preventDefault();
event.stopPropagation();
this.blue = true;
this.red = false;
console.log('mouseleave');
}
Habe ich keinen Zugriff auf den Umfang, in der blauen und Rot wohnen in? Wenn ich einen Toggle erzeuge, kann ich diese Werte mit einer Schaltfläche aktualisieren, aber es scheint nicht so, als könnte ich es aus der Direktive heraus tun. Ist das eine genaue Beobachtung und sollte ich es so machen oder gibt es eine Alternative, die ich in den Dokumenten nicht sehe?
Danke für die anfängliche und dann aktualisierte Antwort! Ihre erste Antwort führte mich zurück zu den Dokumenten, in denen ich meinen Fehler erkannte und ging ein wenig weiter als die oben genannten, um sie voneinander zu trennen mit .emit(). – katyusha
Froh, dass es geholfen hat, können Sie die Antwort akzeptieren, Prost !! –