代码之家  ›  专栏  ›  技术社区  ›  Joshua Craven

角度材质表错误:无法绑定到“mdHeaderRowDef”,因为它不是“md header row”的已知属性

  •  9
  • Joshua Craven  · 技术社区  · 8 年前

    https://material.angular.io/components/table/overview ),但当我将cdk前缀更改为md时,会出现以下错误。。。


    未捕获错误:模板分析错误:无法绑定到“mdHeaderRowDef” 1.如果“md header row”是一个角度分量,并且具有“mdHeaderRowDef”输入,则验证它是否是此模块的一部分。 2.如果“md header row”是Web组件,则将“CUSTOM\u ELEMENTS\u SCHEMA”添加到“@NgModule”。此组件的架构 以抑制此消息。 3.要允许任何属性,请将“NO\u ERRORS\u SCHEMA”添加到“@NgModule”。此组件的架构。


    import {Component, OnInit, ViewChild} from '@angular/core';
    import {DataSource} from '@angular/cdk';
    import { CdkTableModule } from '@angular/cdk';
    import { Observable } from 'rxjs/Observable';
    import 'rxjs/add/observable/of';
    import 'rxjs/add/operator/first';
    import 'rxjs/add/operator/startWith';
    import 'rxjs/add/operator/catch';
    import 'rxjs/add/operator/switchMap';
    import 'rxjs/add/observable/merge';
    import 'rxjs/add/observable/of';
    import 'rxjs/add/observable/interval';
    import 'rxjs/add/operator/map';
    

    我正在导入CdkTableModule,当我使用cdk前缀时,表会按预期显示。。。

    <md-table [dataSource]="dataSource">
    
      <ng-container cdkColumnDef="number">
        <md-header-cell *cdkHeaderCellDef> number </md-header-cell>
        <md-cell *cdkCellDef="let element"><a routerLink="{{element.number}}"> {{element.number}} </a></md-cell>
      </ng-container>
    
      <ng-container cdkColumnDef="book">
        <md-header-cell *cdkHeaderCellDef> book </md-header-cell>
        <md-cell *cdkCellDef="let element"> {{element.book}} </md-cell>
      </ng-container>
    
      <md-header-row *cdkHeaderRowDef="['number', 'book']"></md-header-row>
      <md-row *cdkRowDef="let row; columns: ['number', 'book']"></md-row>
    </md-table>
    

    ... enter image description here 但如果我把“cdk”改成“md”

    <md-table [dataSource]="dataSource">
    
      <ng-container mdColumnDef="number">
        <md-header-cell *mdHeaderCellDef> number </md-header-cell>
        <md-cell *mdCellDef="let element"><a routerLink="{{element.number}}"> {{element.number}} </a></md-cell>
      </ng-container>
    
      <ng-container mdColumnDef="book">
        <md-header-cell *mdHeaderCellDef> book </md-header-cell>
        <md-cell *mdCellDef="let element"> {{element.book}} </md-cell>
      </ng-container>
    
      <md-header-row *mdHeaderRowDef="['number', 'book']"></md-header-row>
      <md-row *mdRowDef="let row; columns: ['number', 'book']"></md-row>
    </md-table>
    

    enter image description here

    P、 这是我的主要应用程序。单元ts import语句,以防有帮助

    imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    AppRoutingModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    MdAutocompleteModule,
    MdButtonModule,
    MdButtonToggleModule,
    MdCardModule,
    MdCheckboxModule,
    MdChipsModule,
    MdTableModule,
    MdDatepickerModule,
    MdDialogModule,
    MdExpansionModule,
    MdGridListModule,
    MdIconModule,
    MdInputModule,
    MdListModule,
    MdMenuModule,
    MdCoreModule,
    MdPaginatorModule,
    MdProgressBarModule,
    MdProgressSpinnerModule,
    MdRadioModule,
    MdRippleModule,
    MdSelectModule,
    MdSidenavModule,
    MdSlideToggleModule,
    MdSliderModule,
    MdSnackBarModule,
    MdSortModule,
    MdTabsModule,
    MdToolbarModule,
    MdTooltipModule,
    MdNativeDateModule,
    CdkTableModule,
    StyleModule
     ]
    
    3 回复  |  直到 8 年前
        1
  •  18
  •   Joshua Craven    8 年前

    npm更新--保存

    并将@angular/cdk和@angular/material更新为2.0.0-beta。10

    包装内。json

     "@angular/material": "^2.0.0-beta.10",
     "@angular/cdk": "^2.0.0-beta.10",
    

    这破坏了一些东西,所以我不得不四处挖掘,需要更新数据源和CdkTableModule的导入

           import { CdkTableModule} from '@angular/cdk/table';
           import {DataSource} from '@angular/cdk/table';
    

    组成部分html

     <md-table [dataSource]="dataSource">
    
        <ng-container mdColumnDef="number">
          <md-header-cell *mdHeaderCellDef> number </md-header-cell>
          <md-cell *mdCellDef="let element"><a routerLink="{{element.number}}"> {{element.number}} </a></md-cell>
        </ng-container>
    
        <ng-container mdColumnDef="book">
          <md-header-cell *mdHeaderCellDef> book </md-header-cell>
          <md-cell *mdCellDef="let element"> {{element.book}} </md-cell>
        </ng-container>
    
        <ng-container mdColumnDef="s1">
          <md-header-cell *mdHeaderCellDef> S1 </md-header-cell>
          <md-cell *mdCellDef="let element"> {{element.sections[0] ? element.sections[0].type : ''}} {{element.sections[0] && element.sections[0].qs ? '('+element.sections[0].qs.length+')' : ''}}</md-cell>
        </ng-container>
    
        <ng-container mdColumnDef="s2">
          <md-header-cell *mdHeaderCellDef> S2 </md-header-cell>
          <md-cell *mdCellDef="let element"> {{element.sections[1] ? element.sections[1].type : ''}} {{element.sections[1] && element.sections[1].qs  ? '('+element.sections[1].qs.length+')' : ''}} </md-cell>
        </ng-container>
    
        <ng-container mdColumnDef="s3">
          <md-header-cell *mdHeaderCellDef> S3 </md-header-cell>
          <md-cell *mdCellDef="let element"> {{element.sections[2] ? element.sections[2].type : ''}} {{element.sections[2] && element.sections[2].qs ? '('+element.sections[2].qs.length+')' : ''}}</md-cell>
        </ng-container>
    
        <ng-container mdColumnDef="s4">
          <md-header-cell *mdHeaderCellDef> S4 </md-header-cell>
          <md-cell *mdCellDef="let element"> {{element.sections[3] ? element.sections[3].type : ''}} {{element.sections[3] && element.sections[3].qs ? '('+element.sections[3].qs.length+')' : ''}}</md-cell>
        </ng-container>
    
        <md-header-row *mdHeaderRowDef="['number', 'book', 's1', 's2', 's3', 's4']"></md-header-row>
        <md-row *mdRowDef="let row; columns: ['number', 'book', 's1', 's2', 's3', 's4']"></md-row>
      </md-table>
    

     import {Component, OnInit} from '@angular/core';
    
     // Data Table imports.
         import { DataSource } from '@angular/cdk/table';
         import { Observable } from 'rxjs/Observable';
         import 'rxjs/add/observable/of';
    
     @Component({
       selector: 'app-start',
       templateUrl: './start.component.html',
       styleUrls: ['./start.component.css']
     })
     export class StartComponent implements OnInit {
    
       pts: Pt[];
       dataSource = new ExampleDataSource(this.ptService);
       constructor( public ptService: PtService ) { }
       ngOnInit() {
         this.pt = this.ptService.getPts();
       }
     }
    
     export class ExampleDataSource extends DataSource<any> {
       data = this.ptService.getPts();
       constructor( public ptService: PtService ) { super() }
       /** Connect function called by the table to retrieve one stream containing the data to render. */
       connect(): Observable<Pt[]> {
         return Observable.of(this.data);
       }
       disconnect() {}
     }
    

    唷!

        2
  •  11
  •   WasiF    6 年前

    进口 MatTableModule

    import { MatTableModule } from '@angular/material/table';
    
    @NgModule({
      imports: [
         MatTableModule
      ]
    })
    export class AppModule { }
    
        3
  •  0
  •   Joshua Craven    8 年前

    从“^2.0.0-beta.11”开始,所有以 md 无效,应替换为 mat

    推荐文章