'checked' 和 (ngModel) 有什么区别

What's the difference between 'checked' and (ngModel)

所以我继承了一个从ionic3到ionic4的不完全移植的项目。在更新一些 <ion-checkbox> 个实例时,我不得不更改:

  <ion-checkbox 
    checked="selected.get(request.id)" 
    (click)="selectItem(request.id)" 
    color="tertiary" 
    slot="start"
  >

至:

  <ion-checkbox 
    (ngModel)="selected.get(request.id)" 
    (click)="selectItem(request.id)" 
    color="tertiary" 
    slot="start"
  >

让它正确切换。 checked 的使用导致它每次在第一次点击时都失败,并且从该点向前反转值。

在这种情况下 (ngModel) 到底在做什么?这基本上是 ionic docs 中显示的未记录的功能,没有解释或示例使用...

请注意 selected 是一个 Map<number, boolean> 并且在同一视图中其他地方使用该 bool 值按预期工作。

编辑:我知道 HTML 属性 和 ng 数据模型之间的区别,我只是不清楚这里的机制是如何工作的...

在高层次上,checked 属于 HTML 而 ngModel 属于 Angular。

[选中]

checked 是复选框的 HTML 属性,在 angular 中,您可以使用以下代码设置复选框的选中 属性。

[checked]="item.checked"

[(ngModel)]

[(ngModel)] 是一个 Angular 属性 用于双向绑定,这意味着您在 .ts 文件中所做的任何更改都会反映在您的视图中,反之亦然以及。 More info

[(ngModel)]="item.checked"

现在,你什么时候用这些? [checked] 当您的要求只是设置元素的选中 属性 时使用,而您使用 [(ngModel)] 将元素值绑定到 .ts 文件中的变量这样您就可以访问它以了解背后的逻辑。