2017-10-19 2 views
0

Ich habe eine einfache Schaltfläche und eine Direktive Ich möchte den Stil der Schaltfläche zugreifen, fügen Sie MarginLeft mit einer onclick() -Funktion in der Direktive, es funktioniert nicht aber die CSS aus Konstruktor funktioniert Wie kann ich das mit einem Klick nutzen? bitte helfen:implementieren onclick() in benutzerdefinierte Direktive eckig 4 ​​

der Richtlinie:

import { Directive, ElementRef } from '@angular/core'; 

@Directive({ 
    selector: '[Bluecolored]' 
}) 
export class BluecoloredDirective { 

    constructor(private element:ElementRef) { 
    console.log(element); 
    element.nativeElement.style.color="blue"; 
    } 
clicked(){ 
    this.element.nativeElement.style.marginLeft=20; 
    console.log("marzi"+this.element.nativeElement.style.marginLeft); 
} 
} 

dies die Vorlage:

@HostListener('onClick') onClick(){ 
    this.element.nativeElement.style.marginLeft=20; 
    console.log("marzi"+this.element.nativeElement.style.marginLeft); 
} 

Auf diese Weise können remote:

<p Bluecolored> 
    new-fom works! 
</p> 
<h1 Bluecolored>Blue Colored</h1> 
<button (click)="clicked()" Bluecolored>Click</button> 

Antwort

0

Sie eine HostListener in Ihrer Richtlinie verwenden könnte (click)="clicked()" von der Taste auch

Ich nannte meine onClick, aber Sie könnten es auch geklickt aswell

+0

, aber ich möchte ein bestimmtes Element aus der Dom say a-Taste auswählen, Wie kann ich das tun? – user3368703

+0

HostListener überwacht nur Ereignisse für das Element, an das die Direktive gebunden ist. –

+0

Ich war zu spät, um meinen vorherigen Kommentar so zu bearbeiten, Wenn Sie mehrere Elemente auf den Klick einer Schaltfläche ändern möchten, sind Sie wahrscheinlich besser der Verwendung von Komponente und einer Variablen, die die Stile Ihres Elements steuern (oder eine Variable, die eine Klasse wechselt) . –