Angular 触发父组件父节点方法的子组件输出事件
我在子组件中使用Angular 触发父组件父节点方法的子组件输出事件,angular,typescript,Angular,Typescript,我在子组件中使用@Output来触发父组件中的目标方法。当我在子组件中单击(单击)=“viewPromotionDetails('Learn more')”时,它也会触发(单击)=“description()” 有人能帮我解决这个问题吗 我还创造了 提前谢谢 child.component.html <div> <div>Name </div> <div>Description </div> <div cl
@Output
来触发父组件中的目标方法。当我在子组件中单击(单击)=“viewPromotionDetails('Learn more')”
时,它也会触发(单击)=“description()”
有人能帮我解决这个问题吗
我还创造了
提前谢谢
child.component.html
<div>
<div>Name </div>
<div>Description </div>
<div class="lear-more" (click)="viewPromotionDetails('Learn more')">Learn More</div>
</div>
<div class="description" (click)="description()">
<my-child (leanMore)="callLearnMore($event)"></my-child>
</div>
看看您的父HTML:
<div class="description" (click)="description()">
<my-child (leanMore)="callLearnMore($event)"></my-child>
</div>
然后在父组件模板文件中,删除(单击)=“description()”
,并将其添加到我的孩子
<div class="description">
<my-child (leanMore)="callLearnMore($event)" (description)="description()"></my-child>
</div>
然后,最后在child-component.html中,向描述
元素添加一个单击侦听器。因此,模板文件应如下所示:
<div>
<div>Name </div>
<div (click)="description.emit()">Description </div>
<div class="lear-more" (click)="viewPromotionDetails('Learn more')">Learn More</div>
</div>
名称
描述
了解更多
希望这能帮助您并解决您的问题。您可以在viewPromotionDetails(“了解更多”)中尝试e.stopPropagation()。您的stackblitz不起作用。我会尝试将
div.lear-more
转换为按钮
元素。Div将其单击事件传播到它的祖先(到根元素)。谢谢您的回答。很抱歉stackblitz我已经更新了。e、 stopPropagation()不工作。
<div>
<div>Name </div>
<div (click)="description.emit()">Description </div>
<div class="lear-more" (click)="viewPromotionDetails('Learn more')">Learn More</div>
</div>