Angular Material 可扩展数据表不显示数据
Angular Material expandable datatable not displaying data
我试图用 API 调用中我自己的数据复制此代码 Angular Material Expandable Table,但数据排序方式错误。它应该返回一个对象数组,但它返回一个数组[],里面看起来是另一个数组或类似的东西。
component.ts
connect(): Observable<DegreeDetails[]> {
const rows = [];
this.registryService.getFullRegistryUniversity().forEach(degreeDetails => rows.push(degreeDetails, { detailRow: true, degreeDetails }));
console.log(rows);
return of(rows);
}
registry.service.ts:
getFullRegistryUniversity(): Observable<DegreeDetails[]> {
return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
}
component.html:
<div class="example-container mat-elevation-z8">
<mat-table #table [dataSource]="dataSource">
<ng-container matColumnDef="graduateRut">
<mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.graduateRut}} </mat-cell>
</ng-container>
<ng-container matColumnDef="major">
<mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.name}} </mat-cell>
</ng-container>
<ng-container matColumnDef="degreeStatus">
<mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.degreeStatus}} </mat-cell>
</ng-container>
<ng-container matColumnDef="expandedDetail">
<mat-cell *matCellDef="let detail">
The symbol for {{detail.degreeDetails.major}}
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"
matRipple
class="element-row"
[class.expanded]="expandedElement == row"
(click)="expandedElement = row"></mat-row>
<mat-row *matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow"
[@detailExpand]="row.degreeDetails == expandedElement ? 'expanded' : 'collapsed'"
style="overflow: hidden">
</mat-row>
</mat-table>
</div>
我做错了什么?感谢您的帮助!
我不得不将部分逻辑移至服务中:
connect(): Observable<DegreeDetails[]> {
return this.registryService.getFullRegistryUniversity()
}
getFullRegistryUniversity(): Observable<DegreeDetails[]> {
const rows = [];
return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
.map(res => {
res.forEach(degreeDetails =>
{ console.log(degreeDetails)
rows.push(degreeDetails, { detailRow: true, degreeDetails })}
);
console.log(rows);
return rows;
})
}
我试图用 API 调用中我自己的数据复制此代码 Angular Material Expandable Table,但数据排序方式错误。它应该返回一个对象数组,但它返回一个数组[],里面看起来是另一个数组或类似的东西。
component.ts
connect(): Observable<DegreeDetails[]> {
const rows = [];
this.registryService.getFullRegistryUniversity().forEach(degreeDetails => rows.push(degreeDetails, { detailRow: true, degreeDetails }));
console.log(rows);
return of(rows);
}
registry.service.ts:
getFullRegistryUniversity(): Observable<DegreeDetails[]> {
return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
}
component.html:
<div class="example-container mat-elevation-z8">
<mat-table #table [dataSource]="dataSource">
<ng-container matColumnDef="graduateRut">
<mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.graduateRut}} </mat-cell>
</ng-container>
<ng-container matColumnDef="major">
<mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.name}} </mat-cell>
</ng-container>
<ng-container matColumnDef="degreeStatus">
<mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
<mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.degreeStatus}} </mat-cell>
</ng-container>
<ng-container matColumnDef="expandedDetail">
<mat-cell *matCellDef="let detail">
The symbol for {{detail.degreeDetails.major}}
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"
matRipple
class="element-row"
[class.expanded]="expandedElement == row"
(click)="expandedElement = row"></mat-row>
<mat-row *matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow"
[@detailExpand]="row.degreeDetails == expandedElement ? 'expanded' : 'collapsed'"
style="overflow: hidden">
</mat-row>
</mat-table>
</div>
我做错了什么?感谢您的帮助!
我不得不将部分逻辑移至服务中:
connect(): Observable<DegreeDetails[]> {
return this.registryService.getFullRegistryUniversity()
}
getFullRegistryUniversity(): Observable<DegreeDetails[]> {
const rows = [];
return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
.map(res => {
res.forEach(degreeDetails =>
{ console.log(degreeDetails)
rows.push(degreeDetails, { detailRow: true, degreeDetails })}
);
console.log(rows);
return rows;
})
}