代码之家  ›  专栏  ›  技术社区  ›  claudiomatiasrg

角材可扩展数据表不显示数据

  •  1
  • claudiomatiasrg  · 技术社区  · 8 年前

    我试图用API调用中的我自己的数据复制此代码 angular material expandable table 它应该返回一个对象数组,但它返回的数组[]中似乎包含另一个数组或类似的内容。

    组件.ts

    connect():可观察<degreeddetails[]gt;。{
    常量行=[]
    this.registryService.getfullRegistryUniversity().foreach(degreedDetails=>rows.push(degreedDetails,detailRow:true,degreedDetails));
    console.log(行);
    返回(行);
    }
    < /代码> 
    
    

    注册表.service.ts:。

    getfullRegistryUniversity():可观察<degreedDetails[]gt;。{
    返回this.http.get<degreeddetails[]gt;(this.serviceurl+'fullRegistryUniversity')
    }
    < /代码> 
    
    

    组件.html:。

    <div class=“example container mat-elevation-z8”>
    <mat table table[datasource]=“数据源”>
    
    <ng container matcolumndef=“渐变规则”>
    <mat header cell*matheadercelldef>编号</mat header cell>
    <mat cell*matcelldef=“let degreeddetails”>degreeddetails.graduaterut</mat cell>
    </ng容器
    
    <ng container matcolumndef=“主要”>
    <mat header cell*matheadercelldef>名称</mat header cell>
    <mat cell*matcelldef=“let degreeddetails”>degreeddetails.name</mat cell>
    </ng容器
    
    <ng container matcolumndef=“degreestatus”>
    <mat header cell*matheadercelldef>权重</mat header cell>
    <mat cell*matcelldef=“let degreeddetails”>degreeddetails.degreestatus</mat cell>
    </ng容器
    
    <ng container matcolumndef=“expandedDetail”>
    <mat cell*matcelldef=“let detail”>
    detail.degreeddetails.major的符号
    </mat单元格
    </ng容器
    
    <mat header row*matheaderrowdef=“displayedColumns”></mat header row>
    <mat row*matrowdef=“让行;列:显示的列;”
    Mat波纹
    class=“元素行”
    [class.expanded]=“expandedElement==行”
    (单击)=“expandedelement=row”></mat row>
    <mat row*matrowdef=“让行;列:''expandedDetail'];时间:isExpansionDetailRow”
    [@detaillexpand]=“row.degreeddetails==expandedelement?”。展开“:”折叠“”
    style=“溢出:隐藏”>
    </mat行>
    </mat表>
    &L/DIV & GT;
    < /代码> 
    
    

    我做错什么了?谢谢你的帮助!使用来自API调用的我自己的数据,但数据排序方式不正确。它应该返回一个对象数组,但它返回的数组[]中似乎包含另一个数组或类似的数组。

    console.log of rows

    组件

    connect(): Observable<DegreeDetails[]> {
        const rows = [];
        this.registryService.getFullRegistryUniversity().forEach(degreeDetails => rows.push(degreeDetails, { detailRow: true, degreeDetails }));
        console.log(rows);
        return of(rows);
      }
    

    注册表.service.ts:

    getFullRegistryUniversity():  Observable<DegreeDetails[]> {
        return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
      }
    

    组件:

    <div class="example-container mat-elevation-z8">
      <mat-table #table [dataSource]="dataSource">
    
        <ng-container matColumnDef="graduateRut">
          <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
          <mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.graduateRut}} </mat-cell>
        </ng-container>
    
        <ng-container matColumnDef="major">
          <mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
          <mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.name}} </mat-cell>
        </ng-container>
    
        <ng-container matColumnDef="degreeStatus">
          <mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
          <mat-cell *matCellDef="let degreeDetails"> {{degreeDetails.degreeStatus}} </mat-cell>
        </ng-container>
    
        <ng-container matColumnDef="expandedDetail">
          <mat-cell *matCellDef="let detail"> 
            The symbol for {{detail.degreeDetails.major}}
          </mat-cell>
        </ng-container>
    
        <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
        <mat-row *matRowDef="let row; columns: displayedColumns;"
                matRipple 
                class="element-row" 
                [class.expanded]="expandedElement == row"
                (click)="expandedElement = row"></mat-row>
        <mat-row *matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow"
                [@detailExpand]="row.degreeDetails == expandedElement ? 'expanded' : 'collapsed'"
                style="overflow: hidden"> 
        </mat-row>
      </mat-table>
    </div>
    

    我做错什么了?谢谢你的帮助!

    1 回复  |  直到 8 年前
        1
  •  0
  •   claudiomatiasrg    8 年前

    我不得不将部分逻辑转移到服务上:

    connect(): Observable<DegreeDetails[]> {
        return this.registryService.getFullRegistryUniversity() 
      }
    
    getFullRegistryUniversity():  Observable<DegreeDetails[]> {
        const rows = [];
        return this.http.get<DegreeDetails[]>(this.serviceUrl + 'fullregistryuniversity')
        .map(res => {
          res.forEach(degreeDetails =>  
            { console.log(degreeDetails)
              rows.push(degreeDetails, { detailRow: true, degreeDetails })}
    
            );
            console.log(rows);
            return rows;
        })
      }