Angular 2에서 마우스 이벤트 전파를 중지하는 가장 쉬운 방법은 무엇입니까? 특별한 $event
물건을 전달 하고 stopPropagation()
직접 전화 해야하거나 다른 방법이 있어야합니다. 예를 들어 Meteor false
에서는 이벤트 핸들러에서 간단히 반환 할 수 있습니다 .
답변
동일한 코드를 반복해서 복사 / 붙여 넣지 않고도 요소에 이것을 추가하고 싶을 경우, 지시를 내릴 수 있습니다. 다음과 같이 간단합니다.
import {Directive, HostListener} from "@angular/core";
@Directive({
selector: "[click-stop-propagation]"
})
export class ClickStopPropagation
{
@HostListener("click", ["$event"])
public onClick(event: any): void
{
event.stopPropagation();
}
}
그런 다음 원하는 요소에 추가하십시오.
<div click-stop-propagation>Stop Propagation</div>
답변
가장 간단한 방법은 이벤트 핸들러에서 전파 중지를 호출하는 것입니다. $event
Angular 2에서 동일하게 작동하며 진행중인 이벤트 (마우스 클릭, 마우스 이벤트 등)가 포함됩니다.
(click)="onEvent($event)"
이벤트 핸들러에서 전파를 중지 할 수 있습니다.
onEvent(event) {
event.stopPropagation();
}
답변
stopPropagation
이벤트를 호출 하면 전파가 방지됩니다.
(event)="doSomething($event); $event.stopPropagation()"
들어 preventDefault
단지 수익false
(event)="doSomething($event); false"
답변
@AndroidUniversity의 답변에 추가하십시오. 한 줄에 다음과 같이 작성할 수 있습니다.
<component (click)="$event.stopPropagation()"></component>
답변
이벤트에 바인딩 된 메서드를 사용하는 경우 false를 반환하면됩니다.
@Component({
(...)
template: `
<a href="https://stackoverflow.com/test.html" (click)="doSomething()">Test</a>
`
})
export class MyComp {
doSomething() {
(...)
return false;
}
}
답변
이것은 나를 위해 일했다 :
mycomponent.component.ts :
action(event): void {
event.stopPropagation();
}
mycomponent.component.html :
<button mat-icon-button (click)="action($event);false">Click me !<button/>
답변
나는에 가지고 stopPropigation
와 preventDefault
그 위에 앉으 아코디언 항목을 확대 버튼을 방지하기 위해.
그래서…
@Component({
template: `
<button (click)="doSomething($event); false">Test</button>
`
})
export class MyComponent {
doSomething(e) {
e.stopPropagation();
// do other stuff...
}
}