MatTable 在 Angular 10 上无法正常工作
MatTable not working properly on Angular 10
不确定是不是因为我是使用 Angular Material 10 从零开始创建这个项目的,我还没有使用过它,它的工作方式不同,或者是因为我只是做错了什么,但是 mat-table 现在甚至没有显示在我的页面上,而且我以前从未遇到过这种情况。
Table代码:
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let row">
<button (click)="edit(row.id)">EDIT</button>
<button (click)="delete(row.id)">DELETE</button>
</td>
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef>Status</th>
<td mat-cell *matCellDef="let row">{{ row.status }}</td>
</ng-container>
<ng-container matColumnDef="browser">
<th mat-header-cell *matHeaderCellDef>Weight</th>
<td mat-cell *matCellDef="let row">{{ row.browser }}</td>
</ng-container>
<ng-container matColumnDef="origin">
<th mat-header-cell *matHeaderCellDef>Symbol</th>
<td mat-cell *matCellDef="let row">{{ row.origin }}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
</table>
DataSource init + displayedColumns:
displayedColumns: ['actions', 'status', 'browser', 'origin'];
dataSource = [];
length = 100;
pageSize = 10;
pageSizeOptions: number[] = [5, 10, 25, 100];
constructor(private logService: LogService, private dialog: MatDialog) {}
ngOnInit(): void {
this._loadData();
}
private _loadData(): void {
const params = { size: this.pageSize, pageIndex: 0 };
this.logService.loadData(params).subscribe((res) => {
this.dataSource = res.content;
});
}
请求工作正常,并且从对象中正确地提供了信息,只是 table 没有出现...
MatTable模块已正确导入到项目中。
我也试过从 Angular Material stackblitz 中直接复制粘贴代码,但它也不起作用。
您应该将 displayedColums
分配给未为其定义类型的数组:
displayedColumns: ['actions', 'status', 'browser', 'origin'];
^^^
replace : with =
不确定是不是因为我是使用 Angular Material 10 从零开始创建这个项目的,我还没有使用过它,它的工作方式不同,或者是因为我只是做错了什么,但是 mat-table 现在甚至没有显示在我的页面上,而且我以前从未遇到过这种情况。
Table代码:
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let row">
<button (click)="edit(row.id)">EDIT</button>
<button (click)="delete(row.id)">DELETE</button>
</td>
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef>Status</th>
<td mat-cell *matCellDef="let row">{{ row.status }}</td>
</ng-container>
<ng-container matColumnDef="browser">
<th mat-header-cell *matHeaderCellDef>Weight</th>
<td mat-cell *matCellDef="let row">{{ row.browser }}</td>
</ng-container>
<ng-container matColumnDef="origin">
<th mat-header-cell *matHeaderCellDef>Symbol</th>
<td mat-cell *matCellDef="let row">{{ row.origin }}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
</table>
DataSource init + displayedColumns:
displayedColumns: ['actions', 'status', 'browser', 'origin'];
dataSource = [];
length = 100;
pageSize = 10;
pageSizeOptions: number[] = [5, 10, 25, 100];
constructor(private logService: LogService, private dialog: MatDialog) {}
ngOnInit(): void {
this._loadData();
}
private _loadData(): void {
const params = { size: this.pageSize, pageIndex: 0 };
this.logService.loadData(params).subscribe((res) => {
this.dataSource = res.content;
});
}
请求工作正常,并且从对象中正确地提供了信息,只是 table 没有出现...
MatTable模块已正确导入到项目中。
我也试过从 Angular Material stackblitz 中直接复制粘贴代码,但它也不起作用。
您应该将 displayedColums
分配给未为其定义类型的数组:
displayedColumns: ['actions', 'status', 'browser', 'origin'];
^^^
replace : with =