角度材质表:无法绑定到“matRowDefColumn”

Joe*_*ter 1 html typescript angular-material angular

我正在尝试使用角度材质表。我导入了该模块,但出现模板解析错误。HTML:

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

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

  <ng-container matColumnDef="key">
    <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>
    <mat-cell *matCellDef="let project">{{project.Key}}</mat-cell>
  </ng-container>

  <ng-container matColumnDef="reason">
    <mat-header-cell *matHeaderCellDef> reason </mat-header-cell>
    <mat-cell *matCellDef="let project">{{project.reason}}</mat-cell>
  </ng-container>

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

</mat-table>
Run Code Online (Sandbox Code Playgroud)

组件中的导入:

import { Component, OnInit } from '@angular/core';
import {Observable} from "rxjs"
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { ProjectService } from '../services/project.service';
import { UserService } from '../services/user.service';
import { Subject } from 'rxjs/Subject';
import { DataSource } from '@angular/cdk/collections';
Run Code Online (Sandbox Code Playgroud)

数据源:我返回一个数组作为可观察的returnDeadProjectList()

export class ProjectDataSource extends DataSource<any>{
constructor(private project:ProjectComponent){
  super();
}

connect(): Observable<Project[]>{
return this.project.returnDeadProjectList();
}

disconnect(){}
Run Code Online (Sandbox Code Playgroud)

从 app.module.ts 导入:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { CommonModule } from "@angular/common";
import 'hammerjs';
import { ProjectService } from './services/project.service';
import { UserService } from './services/user.service';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { MatInputModule, MatButtonModule, MatExpansionModule, MatDatepickerModule, MatNativeDateModule, MatToolbarModule, MatListModule, MatIconModule, MatProgressSpinnerModule, MatSlideToggleModule, MatTableModule, MatPaginatorModule } from '@angular/material';
import { AppComponent } from './app.component';
import { MyFormComponent } from './my-form/my-form.component';
import { BitbucketComponent } from './bitbucket/bitbucket.component';
import { UserComponent } from './user/user.component';
import { ProjectComponent } from './project/project.component';
import { CdkTableModule } from '@angular/cdk/table';
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

compiler.js:466 Uncaught Error: Template parse errors:
Can't bind to 'matRowDefColumn' since it isn't a known property of 'mat-row'.
1. If 'mat-row' is an Angular component and it has 'matRowDefColumn' input, then verify that it is part of this module.
2. If 'mat-row' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.
Run Code Online (Sandbox Code Playgroud)

如果我写CUSTOM_ELEMENTS_SCHEMA进去,schemas: [ ],我会得到一个不同的错误:

compiler.js:466 Uncaught Error: Template parse errors:
Property binding matRowDefColumn not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the "@NgModule.declarations". ("`  `<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
      [ERROR ->]<mat-row *matRowDef="let row; column: displayedColumns;"></mat-row>
Run Code Online (Sandbox Code Playgroud)

有人知道我缺少什么吗?我应该拥有我需要的所有导入,但不知何故它找不到元素。此外,我什至不使用matHeaderRowDef

小智 6

代码片段的 <mat-row *matRowDef="let row; column: displayedColumns;"></mat-row> 属性名称存在问题。MatRowDef 具有属性列而不是列。将其更改为 <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>然后它应该可以工作。