求助:如何为mat-table数据源对象添加输入字段?
Mat-table 数据源绑定输入字段问题解决指南
双向绑定要精准指向行对象属性
表格单元格里的输入框必须直接绑定到当前行的数据源对象属性,不能用临时变量。示例代码:<td mat-cell *matCellDef="let row"> <input [(ngModel)]="row.yourProperty" type="text"> </td>这样输入的内容才会实时同步到
dataSource的对应对象中。数据源更新后通知表格刷新
如果是动态添加/修改数据源条目,别直接替换整个数组,用数组操作方法后手动触发表格更新:// 添加新条目 this.dataSource.data.push(newItem); // 通知表格更新数据 this.dataSource._updateChangeSubscription();或者通过生成新数组触发变更检测:
this.dataSource.data = [...this.dataSource.data, newItem];变更检测失效时手动触发
若输入修改后表格没同步,在组件中注入ChangeDetectorRef,修改数据后调用detectChanges():import { ChangeDetectorRef } from '@angular/core'; constructor(private cdr: ChangeDetectorRef) {} afterInputChange() { this.cdr.detectChanges(); }检查数据源初始化逻辑
确保MatTableDataSource是基于可追踪的数组初始化的,异步数据要等数据加载完成后再赋值给dataSource.data,避免初始绑定为空导致的后续绑定失效。
内容的提问来源于stack exchange,提问作者Svensen
相关产品推荐
相关产品推荐

