Я использую Angular с Material-Angular и хочу показать данные из Reqres API (https://reqres.in).. Поэтому я построил таблицу с нумерацией страниц, но моя нумерация страниц не работает.
Iсоздал сервис и модель для данных, которые я хочу сохранить, используя HttpClient, конечно. В классе компонентов я создал две переменные для хранения этих данных: users: User[]
и dataSource = new MatTableDataSource<User>(this.user)
.
import { Component, OnInit, ViewChild } from '@angular/core';
import { User } from '../config/user.module';
import { DataService } from '../data.service';
import { MatPaginator, MatTableDataSource } from '@angular/material';
@Component({
selector: 'app-users-list',
templateUrl: './users-list.component.html',
styleUrls: ['./users-list.component.sass']
})
export class UsersListComponent implements OnInit {
users: User[];
page: number;
displayedColumns = ['Id', 'FirstName'];
dataSource = new MatTableDataSource<User>(this.users);
constructor(private dataService: DataService) { }
@ViewChild(MatPaginator) paginator: MatPaginator;
ngOnInit() {
this.dataSource.paginator = this.paginator;
this.showUsers();
}
showUsers() {
this.page = 1;
this.dataService.getUsers(this.page)
.subscribe(res => {
this.users = res['data'];
});
}
}
И мой template.htmlfile:
<section class="list">
<table mat-table [dataSource]="users" class="mat-elevation-z8 table">
<ng-container matColumnDef="Id">
<th mat-header-cell *matHeaderCellDef>
<span class="table-header">No.</span>
</th>
<td mat-cell *matCellDef="let user">
<span class="table-value">{{user.id}}</span>
</td>
</ng-container>
<ng-container matColumnDef="FirstName">
<th mat-header-cell *matHeaderCellDef>
<span class="table-header">Name</span>
</th>
<td mat-cell *matCellDef="let user">
<span class="table-value">{{user.first_name}}</span>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<mat-paginator [pageSizeOptions]="[3]" showFirstLastButtons></mat-paginator>
</section>
Поэтому, когда я меняю users
на dataSource
в html-файле: <table mat-table [dataSource]="HERE" class="mat-elevation-z8 table">
, я не вижу результатов в своей таблице. Я думал, что dataSource
хорошо объявлен,тип модели User
и получение данных от users
, но не работает. Если я переключаюсь на users
, все отображаются очень хорошо, но мне нужно dataSource
для нумерации страниц. Проблема в том, что данные не работаютсуществует в users
во время звонка или как?
Использование: Angular-CLI 7