简体   繁体   English

来自 API 的数据未显示在 Angular html 模板中

[英]Data from API not displaying in Angular html template

I am trying to load data from back end through API and display in html template.我正在尝试通过 API 从后端加载数据并显示在 html 模板中。 Back-end API is working and can see in console while putting.后端 API 正在运行,并且可以在放置时在控制台中看到。 But in html page, it is not displaying.但是在html页面中,它没有显示。

My component code like the following,我的组件代码如下所示,

 selectedinstitution: string;
 selecteddept: string;
 filtertext:string;
 public status:boolean=false;
 public data= new Array();
 institutionalUsers: any;

 displayedColumns = [ 'select','username', 'firstname','lastname'];
 dataSource = new MatTableDataSource<Element>();
 selection = new SelectionModel<Element>(true, []);
 ngOnInit() { 

 this.manageuserService.loadUserListApiMethod()
  .subscribe((data:any)=> {
    this.dataSource.data=[data];
     console.log(data);
  });
}

My html template like the following,我的 html 模板如下所示,

<!-- .......................... DATA TABLE .............................-->             
<div class="table-container mat-elevation-z8" style="margin-top: 10px;" >
        <mat-table #table [dataSource]="dataSource">
                  
                  
                <!-- Checkbox Column -->
                <ng-container matColumnDef="select" >
                  <mat-header-cell style="max-width:50px;" *matHeaderCellDef>
                    <mat-checkbox (change)="$event ? masterToggle() : null"
                                  [checked]="selection.hasValue() && isAllSelected()"
                                  [indeterminate]="selection.hasValue() && !isAllSelected()">
                    </mat-checkbox>
                  </mat-header-cell>
                  <mat-cell style="max-width:50px;" *matCellDef="let row">
                    <mat-checkbox (click)="$event.stopPropagation()"
                                  (change)="$event ? selection.toggle(row) : null"
                                  [checked]="selection.isSelected(row)">
                    </mat-checkbox>
                  </mat-cell>
                </ng-container>
                
                
            <ng-container matColumnDef="username">
              <mat-header-cell *matHeaderCellDef> User Name </mat-header-cell>
              <mat-cell *matCellDef="let element"> {{element.sUsername}} </mat-cell>
            </ng-container>
            
            <ng-container matColumnDef="firstname">
              <mat-header-cell *matHeaderCellDef> First Name </mat-header-cell>
              <mat-cell *matCellDef="let element"> {{element.sFname}} </mat-cell>
            </ng-container>
    
                <ng-container matColumnDef="lastname">
              <mat-header-cell *matHeaderCellDef>Last Name </mat-header-cell>
              <mat-cell *matCellDef="let element"> {{element.sLname}} </mat-cell>
                </ng-container>
                
                <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
                <mat-row *matRowDef="let row; columns: displayedColumns;"
                         (click)="selection.toggle(row)">
                </mat-row>                  
        </mat-table> 
          
<!-- .......................... DATA TABLE PAGINATOR ..........................-->  
          <div>
            <mat-paginator #paginator style="height: 45px;"
                [pageSize]="10"
                [pageSizeOptions]="[5, 10, 25, 100]">
            </mat-paginator>
          </div>
        
</div>

Where have I gone wrong?我哪里错了?

I think you should reassign dataSource completely instead of mutating the object, for example like this:我认为你应该完全重新分配dataSource而不是改变对象,例如这样:

subscribe((data: any) => { 
  const source = new MatTableDataSource<Element>()
  source.data = [data];
  this.dataSource = source;
 })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM