Angular Material Mat-table 不渲染数据

标签 angular angular-material

我正在使用 Angular Material Mat-Table。我可以获得记录结果,但它没有呈现在我的表中

这是我获取数组结果的代码

displayedColumns: ['monthNo', 'ratePerSqm', 'fixedAmount', 'frequnecyOfAssessment', 'typeOfAssesment', 'action']
dataSource: MatTableDataSource<GetPropertyInsuranceRate>;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
@ViewChild(MatSort, { static: true }) sort: MatSort;

ngOnInit() {
    this.propertySub = this.cs.propertyId$.subscribe(data => {
      this.propertyId = data;
    });
    this.getInsuranceRates();
}

getInsuranceRates() {
    this.irs.getInsuranceRates(this.propertyId.toString())
    .subscribe((data: GetPropertyInsuranceRate[]) => {
      this.insuranceRateList = data;
      this.dataSource = new MatTableDataSource(this.insuranceRateList);
      console.log(this.insuranceRateList);
      this.dataSource.paginator = this.paginator;
      this.dataSource.sort = this.sort;
    });

    this.gps.getFrequencyOfAssessment()
      .subscribe((data: any) => {
        this.frequencyOfAssessment = data;
      });

    this.gps.getTypesOfAssessment()
      .subscribe((data: any) => {
        this.typeOfAssessment = data;
      })
}

这是在 html 中

<div class="card-body mt-3">
            <table
          mat-table
          [dataSource]="dataSource"
          matSort
          style="width: 100%"
          >
            <ng-container matColumnDef="monthNo">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Month
              </th>
              <td mat-cell *matCellDef="let row">{{ row.monthNo }}</td>
            </ng-container>
            <ng-container matColumnDef="ratePerSqm">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Rate
              </th>
              <td mat-cell *matCellDef="let row">{{ row.ratePerSqm }}</td>
            </ng-container>
            <ng-container matColumnDef="fixedAmount">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Fixed Amount
              </th>
              <td mat-cell *matCellDef="let row">{{ row.fixedAmount }}</td>
            </ng-container>
            <ng-container matColumnDef="frequnecyOfAssessment">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Assessment Frequency
              </th>
              <td mat-cell *matCellDef="let row">{{ row.frequnecyOfAssessment }}</td>
            </ng-container>
            <ng-container matColumnDef="typeOfAssesment">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Assessment Type
              </th>
              <td mat-cell *matCellDef="let row">{{ row.typeOfAssesment }}</td>
            </ng-container>
            <ng-container matColumnDef="action">
              <th mat-header-cell *matHeaderCellDef mat-sort-header>
                Action
              </th>
              <td mat-cell *matCellDef="let row">
                |
                <a href="javascript:void(0);">
                  <i class="material-icons" matTooltip="Delete Record"
                    >delete</i
                  >
                </a>
                |
                <a href="javascript:void(0);">
                  <i class="material-icons" matTooltip="View / Edit Record"
                    >edit</i
                  >
                </a>
                |
              </td>
            </ng-container>
            <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
          <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
          </table>

          <mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
        </div>

这是在控制台日志中

[{…}]
0:
buildingID: 1
effectiveDate: "2019-10-01T16:00:00"
endEffectiveDate: "2019-10-30T16:00:00"
fixedAmount: 150.5
frequencyOfAssesmentID: 7
frequnecyOfAssessment: "Quarterly"
insuranceRateID: 1
isIncludedInAssocDues: true
isVerified: true
modifiedDateTime: null
monthNo: 2
postingDateTime: null
ratePerSqm: 42
typeOfAssesment: "Fixed"
typeOfAssessmentID: 2
__proto__: Object
length: 1
__proto__: Array(0)

Angular Material 是 8.0.1

你能告诉我我做错了什么吗?谢谢。

最佳答案

未正确分配 displayedColumns 变量。您使用了 : 而不是 =。它应该是这样的。

displayedColumns: string[] = ['monthNo', 'ratePerSqm', 'fixedAmount', 'frequnecyOfAssessment', 'typeOfAssesment', 'action'];

关于Angular Material Mat-table 不渲染数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58212775/

相关文章:

angular - Rxjs 间隔请求如果仍在进行中则不应重置,但如果用户更改输入则应重置

html - 如何修复背景图片上的重复内容?

angular - 开放层 5 | Angular 7 |棱 Angular Material | map 在 Angular Material 垫步进器内不起作用

Angular:在数据源中使用对象时,MatSort 不起作用

javascript - mat-spinner 是如何在 mat-table 中渲染的?

angular2 - 在组件之间传递数据对象

Angular Service 为什么我们要在构造函数上注入(inject)

angular - 带有 angular-cli 的 SVG 图标系统

angular - 升级到angular 12后,所有 Material 成分都是 "not a known element"

javascript - 如何在 Angular 6 的 Angular Material 对话框中将数据传递给 afterClosed()