J'ai la directive suivante. J'essaye de passer le nom de classe qui doit être basculé quand le lien/bouton est cliqué. Je continue d'être indéfini dans la console de débogage. HostListener prend un tableau d'args - je suppose que je ne suis pas sûr de savoir comment les passer et ne peux pas sembler trouver un exemple de cela.Passage du paramètre à la directive angulaire dans le tapuscrit
@Directive({
selector: '[appSidebarToggler]'
})
export class SidebarToggleDirective {
constructor(public elementRef: ElementRef) {
}
@HostListener('click', ['$event', '$tobeToggledClassName'])
toggleOpen($event: any, $tobeToggledClassName: any) {
$event.preventDefault();
console.log("class to be toggled is - >" + $tobeToggledClassName);
console.log("ref - >" + this.elementRef);
document.querySelector(tobeToggledClassName).classList.toggle('sidebar-hidden');
}
}
et je l'utilise comme celui-ci dans mon élément:
<a class="" href="#" sidebarToggler tobeToggledClassName="sideMenu">☰</a>
merci.
+ 1 Personnellement, je aime 1er un, tous les trois sont plus gentille. * Question * Que se passe-t-il au cas où je veux passer une valeur dynamique à la fonction 'HostListner'. –
@PankajParkar Je ne discute pas :) Je cherchais autre chose que standart Entrée :) Je vous ai aussi mis à jour – yurzui
@PankajParka Pour la valeur dynamique, nous pouvons utiliser '[attr.name]' https://plnkr.co/ edit/umXy6QMtO4dspRO1BRgo? p = preview Donc, nous ne relayons pas sur la propriété @Input et nous avons moins une ligne dans notre classe) – yurzui