我有 2 个角度模块:
- 学生
- 课程
在课程内部,我有一个组件 (CourseListComponent),我想显示它嵌套在学生组件 (StudentDetailsComponent) 中。所以我需要从 Course 模块中导出该组件:
@NgModule({
declares [ CourseListComponent ],
exports: [ CourseListComponent ]
})
我还需要在 Student 中导入 Course 模块:
@NgModule({
declares: [ StudentListComponent, StudentDetailsComponent ],
imports: [ CourseModule ]
})
在 StudentListComponent 内部,我有一个带有 MatTableDataSource 的 MatTable,其中包含一些数据:
this.students = this.route.snapshot.data.students;
this.dataSource = new MatTableDataSource(this.students);
当我切换到 StudentDetailsComponent 时,我想显示学生注册的课程列表。我还想在 MatTable 中执行此操作:
this.courses = this.route.snapshot.data.courses; // returns correct courses
this.dataSource = new MatTableDataSource(this.courses); // changes filteredData
但是当页面加载时,它只显示空表。我在控制台中没有错误,只是一个空表。
有谁知道如何解决这个问题?
谢谢!
这是HTML:
<table mat-table [dataSource]="dataSource" matSort class="mat-elevation-z8" matSort>
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef mat-sort-header class="aligned-columns">
{{ 'COURSE-LIST.ID' | translate }}
</th>
<td mat-cell *matCellDef="let course">
{{course.id}}
</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header>
{{ 'COURSE-LIST.NAME' | translate }}
</th>
<td mat-cell *matCellDef="let course">
{{ course.name}}
</td>
</ng-container>
<ng-container matColumnDef="year">
<th mat-header-cell *matHeaderCellDef mat-sort-header>
{{ 'COURSE-LIST.YEAR' | translate }}
</th>
<td mat-cell *matCellDef="let course">
{{ course.year}}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
</table>
在课程列表组件中:
displayedColumns: string[] = ['id', 'name', 'year'];
courses: ICourse[];
和模型:
export inteface ICourse {
id: number;
name: string;
year: string;
}