Angular 单击复选框时不会传递更改事件

Angular 单击复选框时不会传递更改事件,angular,typescript,Angular,Typescript,下面是代码片段,我希望任何事件(输入元素中的更改或单击复选框)调用函数updateUser。但updateUser仅在输入元素内的内接值上调用,而不是在复选框上调用。另外,如何从复选框中获取值 <div *ngFor="let item of record.roles;let i=index" (change)="updateUser($event)"> <label for="name">AccountId</label> <input

下面是代码片段,我希望任何事件(输入元素中的更改或单击复选框)调用函数updateUser。但updateUser仅在输入元素内的内接值上调用,而不是在复选框上调用。另外,如何从复选框中获取值

 <div *ngFor="let item of record.roles;let i=index" (change)="updateUser($event)">

   <label for="name">AccountId</label>
   <input type="text" class="form-control" [(ngModel)]="item.accountid" name="accountid"  required> 

  <label>IT Admin</label> 
  <mat-checkbox [(ngModel)] = "item.ITrole"  id="check2" [checked]="isChecked"  name="ITcheck" > 
  </mat-checkbox>
</div>

您可能必须将更改事件放在for循环中的每个可编辑字段上,如下所示

<div *ngFor="let item of record.roles">
  <label for="name">AccountId</label>
  <input type="text" class="form-control" [(ngModel)]="item.accountid" name="accountid"  (ngModelChange)="updateUser(item) required> 

  <label>IT Admin</label> 
  <mat-checkbox [(ngModel)]="item.ITrole"  id="check2" [checked]="isChecked"  name="ITcheck" (ngModelChange)="updateUser(item)> 
  </mat-checkbox>
</div>

帐户ID

所有更改都将与带有ngModel的items对象同步。您可以使用ngModelChange或change event,因为input和mat复选框都有chnge事件,并且在值更改时发出此事件

<div *ngFor="let item of record.roles;let i=index" [ngStyle]="{margin:'1rem'}" >

   <label for="name">AccountId</label>
   <input type="text" class="form-control" [(ngModel)]="item.accountid" 
            name="accountid"  required (change)="changeHandler(item)"> 
 <br>

  <label>IT Admin</label> 
  <mat-checkbox [(ngModel)] = "item.role.itAdmin" (change)="changeHandler(item)" > 
  </mat-checkbox>
  &nbsp;
    <label>User Portal</label> 
  <mat-checkbox [(ngModel)] = "item.role.userPortal"(change)="changeHandler(item)" > 
  </mat-checkbox>

</div>

帐户ID

IT管理员 用户门户

在输入和mat复选框上,演示
(ngModelChange)=“updateUser()”
。复选框的值位于
this.item.ITrole
中。如何在类型scripttry
(ngModelChange)=“updateUser($event)”
中访问this.item.ITrole。啊,对不起,我错过了for循环。因此
(ngModelChange)=“updateUser(i)”
,您可以使用
this.record.roles[i].ITrole
访问复选框值。我无法单击第二行生成的复选框,我已用picture@karansys很乐意帮忙
<div *ngFor="let item of record.roles;let i=index" [ngStyle]="{margin:'1rem'}" >

   <label for="name">AccountId</label>
   <input type="text" class="form-control" [(ngModel)]="item.accountid" 
            name="accountid"  required (change)="changeHandler(item)"> 
 <br>

  <label>IT Admin</label> 
  <mat-checkbox [(ngModel)] = "item.role.itAdmin" (change)="changeHandler(item)" > 
  </mat-checkbox>
  &nbsp;
    <label>User Portal</label> 
  <mat-checkbox [(ngModel)] = "item.role.userPortal"(change)="changeHandler(item)" > 
  </mat-checkbox>

</div>