Angular8中如何防止事件冒泡?
How to prevent event bubbling in Angular 8?
请理解,我是 Angular 的新人,正在全面发展,所以这可能是一个非常没有经验的问题。
问题是我使用 $event 作为参数从组件的 HTML 模板文件调用一个函数,它最终捕获了与我希望定位的元素不同的元素。我调用事件的确切元素有两个 children...
HTML:
<div class="cursorPointer" (click)="answeredQuestion($event)">
<div id="chickenTenders" class="backImageCov question_0Img"></div>
<h3 class="questionSubTitle">Chicken Tenders</h3>
</div>
我的目标是每次调用此事件时都使用 "cursorPointer"
检索 div 容器。我假设这是一个事件冒泡问题,因为如果我单击 ID 为 "chickenTenders"
的 div 容器,$event
参数将返回相同的容器 answeredQuestion()
我的 ts 文件上的函数...
我已经在网上搜索过 () 但在这个例子中,学生问的问题来自指令,所以我对解决方案可能是什么感到困惑...
我已经试过了:
(click)="answeredQuestion(0, $event);false"
并且:
(click)="answeredQuestion(0, $event); $event.stopPropagation()"
然而,none 似乎对事业有所帮助。简而言之,我希望该解决方案能给我一种每次都能访问 parent 元素 (<div class="cursorPointer">
) 的简单方法,即使单击的是 child 元素。
谢谢你们抽出时间来,我很感激。
如果使用 CSS 禁用子元素的指针事件会怎样?
.cursorPointer > div, .cursorPointer > h3{
pointer-events: none;
}
或更好:
.cursorPointer > * {
pointer-events:none;
}
您可以使用 template reference variable 获取对所需元素的引用。
<div #clickElement class="cursorPointer" (click)="answeredQuestion(clickElement)">
您可以在 angular 中处理事件传播(冒泡)。
在您的子组件中使用它。
onClick(event: Event) {
event.stopPropagation();
// do your stuff
}
请理解,我是 Angular 的新人,正在全面发展,所以这可能是一个非常没有经验的问题。
问题是我使用 $event 作为参数从组件的 HTML 模板文件调用一个函数,它最终捕获了与我希望定位的元素不同的元素。我调用事件的确切元素有两个 children...
HTML:
<div class="cursorPointer" (click)="answeredQuestion($event)">
<div id="chickenTenders" class="backImageCov question_0Img"></div>
<h3 class="questionSubTitle">Chicken Tenders</h3>
</div>
我的目标是每次调用此事件时都使用 "cursorPointer"
检索 div 容器。我假设这是一个事件冒泡问题,因为如果我单击 ID 为 "chickenTenders"
的 div 容器,$event
参数将返回相同的容器 answeredQuestion()
我的 ts 文件上的函数...
我已经在网上搜索过 (
我已经试过了:
(click)="answeredQuestion(0, $event);false"
并且:
(click)="answeredQuestion(0, $event); $event.stopPropagation()"
然而,none 似乎对事业有所帮助。简而言之,我希望该解决方案能给我一种每次都能访问 parent 元素 (<div class="cursorPointer">
) 的简单方法,即使单击的是 child 元素。
谢谢你们抽出时间来,我很感激。
如果使用 CSS 禁用子元素的指针事件会怎样?
.cursorPointer > div, .cursorPointer > h3{
pointer-events: none;
}
或更好:
.cursorPointer > * {
pointer-events:none;
}
您可以使用 template reference variable 获取对所需元素的引用。
<div #clickElement class="cursorPointer" (click)="answeredQuestion(clickElement)">
您可以在 angular 中处理事件传播(冒泡)。
在您的子组件中使用它。
onClick(event: Event) {
event.stopPropagation();
// do your stuff
}