Quelle est la façon la plus simple d'arrêter la propagation des événements de souris dans Angular 2? Dois-je passer un $event
objet spécial et m'appeler stopPropagation()
ou il existe un autre moyen. Par exemple, dans Meteor, je peux simplement revenir false
du gestionnaire d'événements.
239
@HostListener("mousedown", ["$event"]) public onMousedown(event: any): void { event.stopPropagation(); }
Le plus simple est d'appeler stop propagation sur un gestionnaire d'événements.
$event
fonctionne de la même manière dans Angular 2, et contient l'événement en cours (par lui un clic de souris, un événement de souris, etc.):sur le gestionnaire d'événements, on peut y arrêter la propagation:
la source
<button confirmMessage="are you sure?" (click)="delete()">Delete</button>
, et dans ma directive:,(click)="confirmAction($event)
alorsconfirmAction(event) { event.stopPropagation(); }
;event
la fonction de gestionnairestopPropogation()
n'est pas disponible. Je devais le faire directement dans le balisage: `(click) =" foo (); $ event.stopPropogation () "L'appel
stopPropagation
à l'événement empêche la propagation:Pour
preventDefault
juste revenirfalse
la source
;
Mais ils n'en ont pas à la fin. Je vais changer ça.false
<3Ajout à la réponse de @AndroidUniversity. En une seule ligne, vous pouvez l'écrire comme ceci:
la source
Si vous êtes dans une méthode liée à un événement, renvoyez simplement false:
la source
false
appelspreventDefault
nonstopPropagation
.preventDefault
est en fait appelé. github.com/angular/angular/blob/… , github.com/angular/angular/blob/…Cela a fonctionné pour moi:
mycomponent.component.ts:
mycomponent.component.html:
la source
Je devais
stopPropigation
etpreventDefault
afin d'empêcher un bouton d'étendre un élément d'accordéon qu'il se trouvait au-dessus.Alors...
la source
Rien ne fonctionnait pour IE (Internet Explorer). Mes testeurs ont réussi à casser mon modal en cliquant sur la fenêtre contextuelle sur les boutons situés derrière. J'ai donc écouté un clic sur ma div écran modal et forcé le recentrage sur un bouton popup.
la source
j'ai utilisé
en bref, séparez simplement les autres choses / appels de fonction par ';' et ajoutez $ event.stopPropagation ()
la source
Je viens de vérifier dans une application Angular 6, le event.stopPropagation () fonctionne sur un gestionnaire d'événements sans même passer $ event
la source
Désactiver le lien href avec JavaScript
Comment cela devrait également fonctionner dans TypeScript avec Angular (Ma version: 4.1.2)
Modèle Manuscritla source
L'ajout de la fonction false after arrêtera la propagation des événements
la source
Cela a résolu mon problème, pour éviter qu'un événement ne soit déclenché par un enfant:
la source
Essayez cette directive
Usage
la source