角度9:禁用标签复选框(而不是复选框)

Mattia_B

我需要它以便使可点击的只是复选框标签的一部分(“隐私权政策”)。这是代码段:

    <div>
      <mat-checkbox required formControlName="privacyCheck" [checked]="false">
        <b style="color: crimson">*</b>Accetto la
        <i style="color: #770E0E" (click)="printDebug()">privacy policy</i>
        e i termini di condizione dell'utilizzo del servizio.
      </mat-checkbox>
    </div>

此刻,如果我单击斜体文本(“隐私策略”),则会得到printDebug,但当然复选框将设置为“ checked”。

我尝试了几种解决方案使用CSS属性pointer-events: none !important;.mat-checkbox-layout .mat-checkbox-label span.mat-checkbox-layout .mat-checkbox-label等。


在此处输入图片说明

在此处输入图片说明

波尔·克鲁伊特

好老式的stopPropagation()怎么样?

我的回答太快了

您需要这样做preventDefault(),因为的内容mat-checkbox将放置在中,<label>并且如果您单击附加的标签,这是默认的浏览器行为以选中一个复选框。

<i style="color: #770E0E" (click)="printDebug($event)">privacy policy</i>
printDebug(event: MouseEvent) {
  event.preventDefault();
  // ...
}

如果您使用材料的波纹效果,则仍会触发该效果。如果您不希望这样做,则必须.stopPropagation()在鼠标按下时执行以下操作:

<i style="color: #770E0E" (mousedown)="$event.stopPropagation()" 
                          (click)="printDebug($event)">privacy policy</i>

突击

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章