如何在 angular 4 中将复选框标记为已选中

How to mark check box as a checked in angular 4

我是 angular 的新手 2. 我需要在单击按钮时标记复选框。 我在循环中有一些复选框,例如

 <tr *ngFor="let roleObj of roleNameList">
      <td>
         <input type="checkbox"   id ={{roleObj.roleID}} />
     </td>
     <td>{{roleObj.roleName}}</td>
  </tr>

我有一组选定的角色,只是我需要在单击编辑按钮时标记这些复选框。所以我在 javascript

中所做的一样
 document.getElementById("role").checked

但在 angular 4 中没有这样的 属性。

我搜索了一下,发现

有一个 属性 绑定

[checked] ="somevariable"

但问题是一样的属性 [checked] ="somevariable" 将添加所有复选框。结果是当我将 somevariable 指定为 true 时。它将标记所有复选框。

我在 jquery 中有其他解决方案,例如

$(document.getElementById(role)).prop('checked', true);

但可能会造成问题,我不确定请指正。

请帮帮我。任何线索或逻辑都会和我一样。

你应该使用变量。在你的 .ts:

public checkboxValue: boolean;
constructor() {
  this.checkboxValue = false;
}

在你的.html中:

 <input type="checkbox" [(ngModel)]="checkboxValue"/>

你应该记得在你的@NgModule 中添加 FormModule:

从'@angular/forms'导入{FormsModule, ReactiveFormsModule};

@NgModule({
    imports: [
         FormsModule      
    ]

您可以修改您的对象以包含布尔值 checked 属性(即 roleObj.checked = false)并在需要时动态更新相关对象。

那么你的标记就变成了

<input type="checkbox" [checked]="roleObj.checked" id ={{roleObj.roleID}} />

您可以遵循这个简单的实现

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <ng-container *ngFor="let item of items">
    <input type="checkbox" 
    [checked]="selected === item.id " 
    [value]="item.id" 
    (change)="selected = item.id"
    [attr.id]="item.id"
    /> 
   <label [attr.for]="item.id"> {{ item.label }}</label>
  </ng-container>

  `,
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  items = [
    { id: 1, label: 'one' },
    { id: 2, label: 'two' },
    { id: 3, label: 'three' }
  ];

  selected = 1;
}

Live demo