ngModelChange在实际更改模型之前触发

时间:2018-10-07 06:31:52

标签: angular

是否存在在模型更改后而不是更改之前触发的事件?每次设置复选框时,我都需要检查是否可以启用下一个按钮。因此,我遍历列表以检查是否选中了任何对象。但是,这些值是在ModelChange事件之后首先绑定的:

<tr *ngFor="let social of socialMediaList">
   <td>{{social.name}}</td>
   <td>
      <input type="checkbox" (ngModelChange)="onSocialMediaChange($event)" type="checkbox" name="options"
                [(ngModel)]="social.selected">
   </td>
</tr>

我的js:

onSocialMediaChange($event) {
    this.ageRangeList = null;
    this.canContinueFromSocialNetwork = this.socialMediaList.filter((item) => item.selected === true).length>0;
  }

3 个答案:

答案 0 :(得分:1)

您可以将社交对象作为modelChange事件的一部分传递。在组件内部,使用事件可以检查是否选中了。

onSocialMediaChange(event, social){
    console.log(this.socialMediaList);
    social.selected = event;
    this.canContinueFromSocialNetwork = this.socialMediaList.filter((item) => item.selected).length>0;
    console.log(this.canContinueFromSocialNetwork);

  }

https://stackblitz.com/edit/angular-pockxp

答案 1 :(得分:1)

确保 ngModelChange 属性在 ngModel 属性之后。

<input
  type="checkbox"
  [(ngModel)]="social.selected" // 1st place
  (ngModelChange)="onSocialMediaChange($event)" // 2nd place
  name="options">

答案 2 :(得分:0)

在模块的导入中添加FormsModule可以解决此问题。