2017-10-19 5 views
0

J'ai un simple bouton et une directive Je veux accéder au style du bouton, ajouter MarginLeft avec une fonction onclick() dans la directive, ça ne fonctionne pas mais régler le css depuis le constructeur comment puis-je l'utiliser avec un clic? s'il vous plaît aider:implémenter onclick() dans la directive personnalisée angulaire 4

la directive:

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); 
} 
} 

c'est le modèle:

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

Répondre

0

Vous pouvez utiliser un HostListener dans votre directive:

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

cette façon, vous pouvez à distance (click)="clicked()" à partir du bouton également

J'ai appelé le mien onClick, mais vous pouvez le nommer cliqué ainsi

+0

mais je veux sélectionner un élément particulier du dom dire un bouton, Comment puis-je faire cela? – user3368703

+0

HostListener n'écoute que les événements sur l'élément auquel la directive est liée. –

+0

J'étais trop tard pour éditer mon précédent commentaire, donc si vous voulez que plusieurs éléments changent en un clic, vous utilisez probablement un composant et une variable contrôlant les styles de votre élément (ou une variable basculant une classe) . –