div 周围的角材质复选框单击

f0r*_*t1s 2 angular-material2 angular

我有一个angular 5 material checkbox周围有 div 和一些其他元素。我希望单击与直接单击div相同。clickcheckbox

这是我的示例代码:

<div (click)="checked = !checked">
  <mat-checkbox class="example-margin" [(ngModel)]="checked">
                I'm a not working checkbox :'(                  
  </mat-checkbox>
  <span style="background-color: #dddd00;">I want to be clickable too</span>
</div>
Run Code Online (Sandbox Code Playgroud)

堆栈闪电战

目前,单击复选框本身不起作用,单击 div 外部才起作用。有任何想法吗?

Pra*_*ana 5

这里的问题是Clickondiv[(ngModel)]on 复选框的事件都会互相抵消,这就是它不起作用的原因。

要使其工作stopPropagation,当您单击 div 元素时,您需要。所以我从 div 单击事件中编写了如下代码returning false来阻止它,并且您的代码将起作用。

工作演示

组件.ts

export class CheckboxConfigurableExample {
  checked = false;
  indeterminate = false;
  align = 'start';
  disabled = false;

  onChecked() {
  this.checked= !this.checked;
  return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

组件.thml

<mat-card class="result">
    <mat-card-content>
        <h2 class="example-h2">Result</h2>
        <section class="example-section">
            <div (click)="onChecked();">
                <mat-checkbox class="example-margin" [(ngModel)]="checked">
          not working checkbox :'( 
                </mat-checkbox>
        <span  style="background-color: #dddd00;">I want to be clickable too</span>
       </div> 

        </section>
    </mat-card-content>
</mat-card>
Run Code Online (Sandbox Code Playgroud)