无法在字符串上创建 属性 'selected',将 ngModel 与 Angular 结合使用

Cannot create property 'selected' on string, using ngModel with Angular

所以我尝试像这样使用 [(ngModel)]

  <div class="items">
    <tbody>
    <tr *ngFor="let account of this.accounts">
      <td>
          <input type="checkbox" [(ngModel)]="this.account.name.selected" name="account">
              {{account.name}}
      </td>
    </tr>
    </tbody>
  </div>

我的accounts创建并填充组件:accounts: Account[] = [];

我的Account对象:

export class Account {
name: string;
surname: string;
}

我得到 ERROR TypeError: Cannot create property 'selected' on string 'John'

我看到了这个线程: 但不太明白如何将提到的修复应用到我的案例中,可能是因为我使用的是 Angular 而不是 AngularJS。如果有人能帮助理解这里的问题,我们会很高兴吗?

看来您的数组中需要 selected 属性。所以为了避免污染Accountclass,可以使用map方法:

let withSelectedProperty = this.accounts.map(s=> ({...s, selected: false}));

和HTML:

<tr *ngFor="let account of withSelectedProperty">
  <td>
      <input type="checkbox" [(ngModel)]="account.selected" name="account">
          {{account.name}}
  </td>
</tr>

更新:

您可以使用方法 filter 获取所有选定的值:

let onlySelected = this.withSelectedProperty.filter(f => f.selected);