Mat Table Angular 只有最后一个数据是从数组中打印出来的,每一行中的每个字母也是如此
Mat Table Angular only last data is getting printed from array that too each letter in each row
table.component.ts
displayColumns: string[] = [ 'Feedback'] ;
listData: MatTableDataSource<any> ;
//listData;
myJSON ;
records: number;
objPutss: Post;
catupdated = false;
searchKey: string ;
@ViewChild(MatSort , {static: false}) sort: MatSort;
@ViewChild(MatPaginator , {static: false}) paginator: MatPaginator ;
tableLoad(event: any) {
this.fdbif = false;
const selcetdCategoryCount = event.target.innerHTML;
this._responseService.getData().subscribe(data => {
this.toolDataSet = data;
for (let i = 0 ; i < this.toolDataSet.length ; i++) {
// tslint:disable-next-line: triple-equals
if (this.toolDataSet[i].Tool == this.selectedTool) {
if(this.toolDataSet[i].Corrected_Category == selcetdCategoryCount){
this.fdb[i]=this.toolDataSet[i].Feedback;
this.listData = new MatTableDataSource(this.fdb[i]) ;
this.listData.sort = this.sort;
this.listData.paginator = this.paginator ;
this.countt++;
}
}
}
console.log(this.countt);
console.log(this.fdb);
// this.listData = new MatTableDataSource(this.fdb) ;
});
}
table.component.html
<div *ngIf="countClicked">
<mat-table [dataSource]= "listData" matSort >
<ng-container matColumnDef="Feedback">
<mat-header-cell *matHeaderCellDef mat-sort-header ><span>Feedback </span></mat-header-
cell>
<mat-cell *matCellDef="let element " >
{{element}}
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayColumns"></mat-row>
</mat-table>
<mat-paginator showFirstLastButtons
[pageSize]="10"></mat-paginator>
</div>
我能够在控制台日志中获取数据,即如果有五行数据,那五行我可以在 cosole 日志中看到,而在 mat-table 中只有第 5 行(最后)行被显示,一个单词的每个字母也显示在每一行中
enter image description here
console.log(countt) 给我准确的计数
谁能帮我解决这个问题
@Rajesh 我可以看到您正在遍历循环并创建新的数据源 this.listData = new MatTableDataSource(this.fdb[i]) ;
...Mat table 以这样的方式工作,您只需将整个数组传递给table 对象,它将负责解析和构造值。
我的建议是,不要在 for 循环中创建 MatTableDataSource,创建您希望在 table 上打印的数组格式的数据,然后将数组传递给 mat table。
演示 link:Array to mat table
table.component.ts
displayColumns: string[] = [ 'Feedback'] ;
listData: MatTableDataSource<any> ;
//listData;
myJSON ;
records: number;
objPutss: Post;
catupdated = false;
searchKey: string ;
@ViewChild(MatSort , {static: false}) sort: MatSort;
@ViewChild(MatPaginator , {static: false}) paginator: MatPaginator ;
tableLoad(event: any) {
this.fdbif = false;
const selcetdCategoryCount = event.target.innerHTML;
this._responseService.getData().subscribe(data => {
this.toolDataSet = data;
for (let i = 0 ; i < this.toolDataSet.length ; i++) {
// tslint:disable-next-line: triple-equals
if (this.toolDataSet[i].Tool == this.selectedTool) {
if(this.toolDataSet[i].Corrected_Category == selcetdCategoryCount){
this.fdb[i]=this.toolDataSet[i].Feedback;
this.listData = new MatTableDataSource(this.fdb[i]) ;
this.listData.sort = this.sort;
this.listData.paginator = this.paginator ;
this.countt++;
}
}
}
console.log(this.countt);
console.log(this.fdb);
// this.listData = new MatTableDataSource(this.fdb) ;
});
}
table.component.html
<div *ngIf="countClicked">
<mat-table [dataSource]= "listData" matSort >
<ng-container matColumnDef="Feedback">
<mat-header-cell *matHeaderCellDef mat-sort-header ><span>Feedback </span></mat-header-
cell>
<mat-cell *matCellDef="let element " >
{{element}}
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayColumns"></mat-row>
</mat-table>
<mat-paginator showFirstLastButtons
[pageSize]="10"></mat-paginator>
</div>
我能够在控制台日志中获取数据,即如果有五行数据,那五行我可以在 cosole 日志中看到,而在 mat-table 中只有第 5 行(最后)行被显示,一个单词的每个字母也显示在每一行中 enter image description here
console.log(countt) 给我准确的计数
谁能帮我解决这个问题
@Rajesh 我可以看到您正在遍历循环并创建新的数据源 this.listData = new MatTableDataSource(this.fdb[i]) ;
...Mat table 以这样的方式工作,您只需将整个数组传递给table 对象,它将负责解析和构造值。
我的建议是,不要在 for 循环中创建 MatTableDataSource,创建您希望在 table 上打印的数组格式的数据,然后将数组传递给 mat table。
演示 link:Array to mat table