Mat-table不会在Angular 5中打印数据

时间:2017-12-08 09:03:10

标签: javascript angular angular-material

我会在我的项目中使用mat-table

在我的组件文件中,我使用observable从数据库中捕获数据并将其打印在我的数据表中。

我试图关注official tutorial,但屏幕上没有任何内容,我也没有收到错误

export class ListeProjetsComponent implements OnInit {

  constructor(private ajoutProj: AjoutprojService) { }
  nouveauProjet: NouveauProjet[];
  ngOnInit(){
    this.getAllProj();
  }
  displayedColumns = ['name'];
  dataSource = new MatTableDataSource<NouveauProjet>(this.nouveauProjet);

  applyFilter(filterValue: string) {
    filterValue = filterValue.trim(); // Remove whitespace
    filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
    this.dataSource.filter = filterValue;
  }

  getAllProj() {
    this.ajoutProj.getAllProj().subscribe(
      response => {
      this.nouveauProjet = response; console.log(this.nouveauProjet) // data is printed in the browser console. but not on screen
      },
      error => console.log(error)
    );
  }
}

Html文件

<div class="example-container mat-elevation-z8">
  <div class="example-header">
    <mat-form-field>
      <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
    </mat-form-field>
  </div>

  <mat-table #table [dataSource]="dataSource">

    <ng-container matColumnDef="name">
      <mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.nomProj}} </mat-cell>
    </ng-container>



    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
    <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
  </mat-table>
</div>

App screenshot

1 个答案:

答案 0 :(得分:3)

这可能会发生,因为您使用空数据集初始化表:

dataSource = new MatTableDataSource<NouveauProjet>(this.nouveauProjet);

此时,this.nouveauProjet可能不包含任何数据;

尝试从服务中获取数据时重新初始化表数据源:

  getAllProj() {
    this.ajoutProj.getAllProj().subscribe(
      response => {
        // set dataSource here
        this.dataSource = new MatTableDataSource<NouveauProjet>(response);
      },
      error => console.log(error)
    );
  }
相关问题