angular - 如何在 Angular 动态数据表中创建双向绑定?
问题描述
我使用的动态数据表如下:
<table class="table table-striped table-hover" mat-table matSort (matSortChange)="sortData($event)" dir="rtl"
[dataSource]="dataSource">
<ng-container *ngFor="let column of columns" matColumnDef="{{column.columnDef}}">
<div>
<th mat-header-cell *matHeaderCellDef> {{column.label}}</th>
</div>
<td mat-cell *matCellDef="let row; let index = index" class="cells">
<mat-form-field>
<input matInput [placeholder]="column.label" [value]="column.cell(row, column)">
</mat-form-field>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr (click)="showContent(row)" class="rows" mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
这是我用于构建列和数据源的打字稿代码:
let mhd = {
columnDef: eachColumns['columnName'],
label: eachColumns['displayName'],
cell: (row, c) => {
return row[c.columnDef];
}
};
this.columns.push(mhd)
this.displayedColumns = this.columns.map(c => c.columnDef);
this.dataSource = new MatTableDataSource(this.result);
我更改了输入数据然后 console.log(this.result) 但在控制台中我看到了 Previous 对象。
如果我更改为[(value)]="column.cell(row, column)"
我在控制台中收到以下错误:
core.js:14597 错误错误:未捕获(承诺中):错误:模板解析错误:解析器错误:ng:// [column.cell(row, column)=$event] 中第 25 列的意外标记“=” /ReportModule/MainGridReportComponent.html@14:51 ("= index" class="cells"> ][(value)]="column.cell(row, column)"> "): ng:///ReportModule/MainGridReportComponent .html@14:51
解决方案
它是双向绑定的正确方式:
[(ngModel)]="row[column.columnDef]"
推荐阅读
- javascript - 如何从 API 获取 React JS 组件中多个项目的数据
- angularjs - 使用 $scope.$watch 处理 $interval.cancel 不起作用
- integration - 无法通过 PUT 功能更新(集成)
- wordpress - 每次用户购买 5 个相同类别时增加额外费用的插件
- parallel-processing - Pytorch softmax 沿着不同的掩码,没有 for 循环
- javascript - 如何从我的数据库中提取标题以创建悬停效果
- javascript - 带有 ES6 和 webpack 的 AngularJS 1.7 给出错误:未捕获的类型错误:无法读取未定义的属性“模块”
- java - JPA 搜索引发错误“已为此查找操作错误地提供了空 PK 的实例”
- database - 删除相关对象时如何维护外键?
- ios - 合并 FCM 和 Google OAuth GoogleServicesInfo.plist 文件