Jaki jest najprostszy sposób na zatrzymanie propagacji zdarzeń myszy w Angular 2? Czy powinienem przekazać $event
przedmiot specjalny i zadzwonić, stopPropagation()
czy jest jakiś inny sposób. Na przykład w Meteorze mogę po prostu wrócić false
z modułu obsługi zdarzeń.
238
@HostListener("mousedown", ["$event"]) public onMousedown(event: any): void { event.stopPropagation(); }
Najprostszym jest wywołanie zatrzymania propagacji w module obsługi zdarzeń.
$event
działa tak samo w Angular 2 i zawiera trwające zdarzenie (kliknięcie myszą, zdarzenie myszy itp.):w module obsługi zdarzeń możemy tam zatrzymać propagację:
źródło
<button confirmMessage="are you sure?" (click)="delete()">Delete</button>
I moim dyrektywy:(click)="confirmAction($event)
, a następnieconfirmAction(event) { event.stopPropagation(); }
;event
w module obsługi funkcjastopPropogation()
nie jest dostępna. Musiałem to zrobić poprawnie w znacznikach: `(click) =" foo (); $ event.stopPropogation () "Wywołanie
stopPropagation
zdarzenia zapobiega propagacji:Po
preventDefault
prostu wróćfalse
źródło
;
jednak końca. Zmienię to.false
<3Dodanie do odpowiedzi z @AndroidUniversity. W jednym wierszu możesz to napisać tak:
źródło
Jeśli używasz metody powiązanej ze zdarzeniem, po prostu zwróć false:
źródło
false
połączeńpreventDefault
niestopPropagation
.preventDefault
jest nazywany. github.com/angular/angular/blob/... , github.com/angular/angular/blob/...To działało dla mnie:
mycomponent.component.ts:
mycomponent.component.html:
źródło
Musiałem
stopPropigation
ipreventDefault
aby przycisk nie rozszerzał elementu akordeonu, znajdował się nad nim.Więc...
źródło
Nic nie działało dla IE (Internet Explorer). Moi testerzy byli w stanie złamać mój modal, klikając okno podręczne na przyciskach za nim. Słuchałem więc kliknięcia na moim modalnym ekranie div i wymusiłem ponowne ustawianie ostrości na przycisku wyskakującym.
źródło
użyłem
w skrócie po prostu oddziel inne wywołania rzeczy / funkcji za pomocą ';' i dodaj $ event.stopPropagation ()
źródło
Właśnie sprawdziłem w aplikacji Angular 6, event.stopPropagation () działa na module obsługi zdarzeń, nawet nie przekazując $ event
źródło
Wyłącz link href za pomocą JavaScript
Jak powinno działać również w TypeScript z Angularem (Moja wersja: 4.1.2)
Szablon Maszynopisźródło
Dodanie funkcji false po spowoduje zatrzymanie propagacji zdarzeń
źródło
To rozwiązało mój problem, od zapobiegania, że zdarzenie zostanie zwolnione przez dzieci:
źródło
Wypróbuj tę dyrektywę
Stosowanie
źródło