Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何转义父div单击角度_Javascript_Angular - Fatal编程技术网

Javascript 如何转义父div单击角度

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

我使用Angular8,有一个
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放入以确认它,甚至不调用我的更改函数