如何在 Angular 4 的材料设计表中添加复选框

Posted

技术标签:

【中文标题】如何在 Angular 4 的材料设计表中添加复选框【英文标题】:How to add a checkbox in a Material Design table in Angular 4 【发布时间】:2018-05-08 14:54:59 【问题描述】:

我想在 Angular 4 的 Material Design 表中添加一个复选框,它将位于 Publish 列下。问题是复选框在表格中不只显示文本和错误消息

“未指定名称属性的表单控件没有值访问器”

这是我的代码:

<div class="mat-table-container mat-elevation-z8">
  <mat-table #table [dataSource]="assessmentManualList">

    <ng-container cdkColumnDef="documentID">
      <mat-header-cell *cdkHeaderCellDef>  </mat-header-cell>
      <mat-cell *cdkCellDef="let row">
        <button mat-icon-button [matMenuTriggerFor]="menu">
          <mat-icon>more_vert</mat-icon>
        </button>
        <mat-menu #menu="matMenu">
          <button mat-menu-item>
            <mat-icon><i class="material-icons">content_copy</i></mat-icon>
            <span>Copy row.DocumentID</span>
          </button>
          <button mat-menu-item>
            <mat-icon><i class="fa fa-trash" aria-hidden="true"></i></mat-icon>
            <span>Delete row.documentID</span>
          </button>
        </mat-menu>
      </mat-cell>
    </ng-container>  

    <ng-container cdkColumnDef="textDetail">
      <mat-header-cell *cdkHeaderCellDef> Document </mat-header-cell>
      <mat-cell *cdkCellDef="let row"> row.textDetail </mat-cell>
    </ng-container> 

    <ng-container cdkColumnDef="isPublish">
      <mat-header-cell *cdkHeaderCellDef> Publish </mat-header-cell>
      <mat-cell *cdkCellDef="let row">
        row.isPublish
        <md-checkbox class="example-margin" [(ngModel)]="row.isPublish"> 
Checked </md-checkbox>  
      </mat-cell>            
    </ng-container> 
    <mat-header-row *cdkHeaderRowDef="displayedColumns"></mat-header-row>
    <mat-row *cdkRowDef="let row; columns: displayedColumns;" (click)="selectedRow(row)" [class.active]="isSelected(row)"></mat-row>
  </mat-table>
</div>

【问题讨论】:

[我通过将 name="fieldName" ngDefaultControl 属性添加到带有 [(ngModel)] 属性的元素中来修复此错误](***.com/a/47795277) 【参考方案1】:

发现了我从 angular.material.io 复制代码的问题,他们没有更新示例以使用最新版本的材料设计。所以我有下面的复选框代码:

<md-checkbox class="example-margin" [(ngModel)]="row.isPublish"> 
Checked </md-checkbox>

将 md 更改为 mat:

<mat-checkbox [checked]="row.isPublish"></mat-checkbox>

解决了问题。

【讨论】:

以上是关于如何在 Angular 4 的材料设计表中添加复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应材料表的列中添加自定义复选框?

将 Angular Material Design 复选框绑定到控制器中的数组

Angular 4 添加复选框以选择列表

如何在材料设计 Angular 6 中设置时间选择器?

复选框材料设计

使用useState(Reactjs)时未选中材料表复选框