我有一个嵌套在一个级别的单击事件.当我单击子对象时,会调用预期的函数,但也会调用父对象的函数.这是代码

<li class="task-item" *ngFor="let task of tasks" (click)="showTask(task.name)">
    <input type="checkbox" [ngModel]="task.taskStatus" (ngModelChange)="changeTaskStatus($event)" />
</li>

所以当复选框改变时,changeTaskStatus()showTask()一起调用.当复选框更改时,我希望家长保持安静.我如何做到这一点?在Angular 1中很容易处理这个问题

我try 过的失败的事情

在CheckBox的Click事件中使用了$event.stopPropagation(),该事件不会改变任何内容

<input type="checkbox" [ngModel]="task.taskStatus" (click)="$event.stopPropagation()" (ngModelChange)="changeTaskStatus($event)" />

推荐答案

CheckBox事件需要使用stopPropagation():

<input type="checkbox" [ngModel]="task.taskStatus" (ngModelChange)="changeTaskStatus($event);$event.stopPropagation()" />

它防止当前事件在捕获和冒泡阶段进一步传播.你可以读here多本书.此外,您可能需要添加stopPropagation()click个复选框事件,但我不能here%确定:

<input type="checkbox" [ngModel]="task.taskStatus" (click)="$event.stopPropagation()" (ngModelChange)="changeTaskStatus($event)" />

Angular相关问答推荐

Angular ngModel双向数据绑定不适用于表单中的Select元素

angular 17:app.config. server.ts中的mergeApplicationconfig导致初始化在app.config. ts中导入的提供程序

RXJS运算符用于combineLatest,不含空值

角material 17 -如何从Style.scss中的主题中获取原色

使用Angular 13的NgxPrinterService打印时,第二页上的空白区域

倒计时计时器,每10秒重新启动一次,共4次

当我更新S显示的数据时,为什么我的垫表用户界面没有更新?

Primeng:安装ANGLE 16.2.0版本

npm install命令在基本Angular 应用程序的天蓝色构建管道中失败

Angular14:支持旧版浏览器的官方方式是什么?

异步管道模板中的局部变量(Angular 2+)

Angular 2如何使用路由和location.go()检测后退按钮按下?

ngx-bootstrap modal:如何从模态中获取返回值?

Angular2 ngFor跳过第一个索引

由router-outlet 创建时如何将css类应用于组件元素?

导航到同一条route路由不刷新组件?

如何在 Angular 2 中正确设置 Http 请求标头

交替行 colored颜色 angular material表

有条件地将 RouterLink 或其他属性指令添加到 Angular 2 中的元素

如何在 Angular CLI 的构建时插入内部版本号或时间戳