Javascript 如何转义父div单击角度
我使用Angular8,有一个Javascript 如何转义父div单击角度,javascript,angular,Javascript,Angular,我使用Angular8,有一个div,它有一个routelink, 在div中,除了下面的内容之外,我还有一个复选框 <div [routerLink]="['/somewhere', blablabla]"> <!--some other components if you click it goes to the routelink--> ... <mat-checkbox [(ngModel)]="myModel&qu
div
,它有一个routelink,
在div
中,除了下面的内容之外,我还有一个复选框
<div [routerLink]="['/somewhere', blablabla]">
<!--some other components if you click it goes to the routelink-->
...
<mat-checkbox [(ngModel)]="myModel" value="{{someValue}}"
(change)="myFunction()"></mat-checkbox>
</div>
...
问题是当您单击复选框本身时,
它通过父div的routelink将您带走,跳过我的(更改)函数
我不想那样,我想调用checkbox change函数,
因为我需要在那里做些不同的事情,而不是离开routelink
顺便说一句,我确实需要调用(更改)而不是(单击),我应该怎么做?您可以将
$event
对象传递给更改处理程序,即
<mat-checkbox [(ngModel)]="myModel" value="{{someValue}}"
(change)="myFunction($event)"></mat-checkbox>
然后从事件处理程序调用方法受到Satpal建议的启发,我意识到点击在更改之前,因此我可以停止事件传播,并保持(更改)函数不变,如下所示, 它正在按我的要求工作,请单击复选框“它不会消失”
<mat-checkbox [(ngModel)]="myModel" value="{{someValue}}"
(click)="hereJustStopThePropagation($event)"
(change)="myFunction()"></mat-checkbox>
这不起作用,如果我使用(单击)=“myFunction($event)”和event.stopPropagation()或event.preventDefault(),它起作用,但不用于(更改),它不起作用,我将console.log放入以确认它,甚至不调用我的更改函数