预期的行为是什么?

显示内容而没有错误的数据示例:

[{…}] 0: dateReport:"2019-05-12" flgVise:true pctPointeAgence:1 
title:"title2" __proto__:Object length:1 __proto__:Array(0)

目前的行为是什么?

我得到这个例外

ERROR TypeError: Cannot set property 'top' of undefined at StickyStyler.push../node_modules/@angular/cdk/esm5/table.es5.js.StickyStyler._removeStickyStyle (table.es5.js:900) at StickyStyler.push../node_modules/@angular/cdk/esm5/table.es5.js.StickyStyler.clearStickyPositioning (table.es5.js:721) at MatTable.push../node_modules/@angular/cdk/esm5/table.es5.js.CdkTable.updateStickyHeaderRowStyles (table.es5.js:1669) at MatTable.push../node_modules/@angular/cdk/esm5/table.es5.js.CdkTable._forceRenderHeaderRows (table.es5.js:1986) at MatTable.push../node_modules/@angular/cdk/esm5/table.es5.js.CdkTable.ngAfterContentChecked (table.es5.js:1370) at callProviderLifecycles (core.js:9258) at callElementProvidersLifecycles (core.js:9236) at callLifecycleHooksChildrenFirst (core.js:9226) at checkAndUpdateView (core.js:10157) at callViewAction (core.js:10394)

改变现有行为的用例或动机是什么?

组件打字稿:

export class ListeEtatComponent implements OnInit, AfterViewInit {
displayedColumns = ['title', 'dateReport', 'pctPointeAgence', 'flgVise'];
DATA_SOURCE = new MatTableDataSource();

@ViewChild(MatSort) sort: MatSort;

reports: Report[];
constructor(private etatInterneService: EtatInterneService) { }
ngOnInit() {

}
ngAfterViewInit() {
  this.fillTable();
}
fillTable(): void {
  this.etatInterneService.getReports().subscribe(
    (reports: Report[]) => {
      this.DATA_SOURCE.data = reports;
      console.log(reports);
    }, (error) => {
      console.error(error);
    }
  );
}

}

我的HTML是:

<table mat-table [dataSource]="DATA_SOURCE" matSort>
  <!-- Etat interne  Column -->
  <ng-container matColumnDef="title">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> Etat interne </th>
    <td mat-cell *matCellDef="let report">
        {{report.title}} </td>
  </ng-container>

  <!--  Date report Column -->
  <ng-container matColumnDef="dateReport">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> Date report </th>
    <td mat-cell *matCellDef="let report">
        {{report.dateReport}} </td>
  </ng-container>

  <!-- % Pointé  Column -->
  <ng-container matColumnDef="pctPointeAgence">
    <th mat-header-cell *matHeaderCellDef> % Pointé </th>
    <td mat-cell *matCellDef="let report">
        {{report.pctPointeAgence}} </td>
  </ng-container>

  <!-- Visé Column -->
  <ng-container matColumnDef="flgVise">
    <th mat-header-cell *matHeaderCellDef> Visé </th>
    <td mat-cell *matCellDef="let report">
      <mat-radio-button color="warn" [checked]="report.flgVise" disabled></mat-radio-button>
    </td>
  </ng-container>
  <ng-container *matHeaderRowDef="displayedColumns">
    <tr class="tableSecondHeader">
      <th colspan="1">clés fixes</th>
      <th></th>
      <th colspan="2">indicateur en table"entéte des etats interne"</th>
      <th></th>
    </tr>
    <tr mat-header-row></tr>
  </ng-container>
  <tr mat-row *matRowDef="let row; columns: displayedColumns;" ></tr>
</table>

哪些版本的Angular,Material,TypeScript,浏览器?

@ angular / cdk:6.2.1

@ angular / material:6.2.1

@ angular / core:6.0.5

打字稿:“2.7.2”

浏览器:chrome

update : 当我将fillTable移动到ngoOnInit()时它工作但我认为问题仍然存在于多个 Headers 行中:

它合作

<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>

但不是:

<ng-container *matHeaderRowDef="displayedColumns">
<tr class="tableSecondHeader">
  <th colspan="1">clés fixes</th>
  <th></th>
  <th colspan="2">indicateur en table"entéte des etats interne"</th>
  <th></th>
</tr>
<tr mat-header-row></tr>

UPDATE

它现在有效

我将此示例用于多个 Headers 行

table-multiple-header-footer