Angular Material报错:Can't bind to 'dataSource' since it isn't a known property of 'md-table'

官方示例

<div class="example-container mat-elevation-z8">
  <mat-table #table [dataSource]="dataSource">

    <!--- Note that these columns can be defined in any order.
          The actual rendered columns are set as a property on the row definition" -->

    <!-- Position Column -->
    <ng-container matColumnDef="position">
      <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.position}} </mat-cell>
    </ng-container>

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

    <!-- Weight Column -->
    <ng-container matColumnDef="weight">
      <mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.weight}} </mat-cell>
    </ng-container>

    <!-- Color Column -->
    <ng-container matColumnDef="symbol">
      <mat-header-cell *matHeaderCellDef> Symbol </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.symbol}} </mat-cell>
    </ng-container>

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

错误信息

Uncaught Error: Template parse errors:
Can't bind to 'dataSource' since it isn't a known property of 'mat-table'.
1. If 'mat-table' is an Angular component and it has 'dataSource' input, then verify that it is part of this module.
2. If 'mat-table' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

版本信息

Angular:4.2.4
Angular Material:2.00-beta.12
Angular CDK:2.00-beta.12

解决方法

官方的文档里只要求需要导入MatTableModule。

import {MatTableModule} from '@angular/material';

dataSource属于CDK的CdkTableModule模块,也是需要导入CdkTableModule:

import {CdkTableModule} from "@angular/cdk/table";

使用

版权声明:著作权归作者所有。

相关推荐

Angular 4:集成Angular Material2

Angular Material目的是按照Material Design的规范,使用Angular和TypeScript构建一个高质量的UI组件集。Angular 4已有的项目可以按照下面的步骤集成使用Angular Material2。安装Angular Material以及Angular CDKnpm install&nbs