【问题标题】:Why is '$event.target.checked' giving angular TypeError when i am trying to use it with mat-checkbox为什么当我尝试将它与 mat-checkbox 一起使用时,'$event.target.checked' 会给出角度 TypeError
【发布时间】:2021-09-16 01:53:29
【问题描述】:

当我尝试将 $event.target.checked 与 angular mat-checkbox 一起使用时,它会给出一个错误,指出 -“无法读取 Object.eval [as handleEvent] 处未定义的属性 'checked'” 这是为 Angular8 上的复选框传递多个值

onChange(cls: string, isChecked: boolean) {
  const clsFormArray = < FormArray > this.myForm.controls.usercls;
  if (isChecked) {
    clsFormArray.push(new FormControl(cls));
  } else {
    let index = clsFormArray.controls.findIndex(x => x.value == cls);
    clsFormArray.removeAt(index);
  }

}
<mat-checkbox class="example-margin" (change)="onChange(data.cls, $event.target.checked)">
  {{ data.cls }}
</mat-checkbox>
<mat-checkbox class="example-margin"(change)="onChange(data.cls,$event.target.checked)">
{{ data.cls }}
</mat-checkbox>
    onChange(cls: string, isChecked: boolean) {
            const clsFormArray = <FormArray>this.myForm.controls.usercls;
            if (isChecked) {
              clsFormArray.push(new FormControl(cls));
            } else {
              let index = clsFormArray.controls.findIndex(x => x.value == cls);
              clsFormArray.removeAt(index);
            }
            }

我期望类被推送并添加到数组中,所以 我可以打印出来

【问题讨论】:

    标签: angular typescript angular-material


    【解决方案1】:

    无需发送target。只需发送$event.checked 我已经更新了下面的代码。

    <mat-checkbox class="example-margin" (change)="onChange(data.cls, $event.checked)">
      {{ data.cls }}
    </mat-checkbox>
    

    【讨论】:

    • @octogenex 如果可行,请投票并将答案标记为有用。
    【解决方案2】:
    <mat-checkbox class="example-margin"(change)="onChange($event)">
    {{ data.cls }}
    </mat-checkbox>
    
      onChange(event) {
                const clsFormArray = <FormArray>this.myForm.controls.usercls;
                if (event.checked) {
                  clsFormArray.push(new FormControl(event.source.value));
                } else {
                  let index = clsFormArray.controls.findIndex(x => x.value == event.source.value);
                  clsFormArray.removeAt(index);
                }
                }
    

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多