Angulaire Matières 2 table de côté de Serveur de pagination
Je suis en train de Réaliser Angulaire des Matériaux 2, MatPaginator côté serveur pagination.. comment puis-je réaliser ?
Ci-dessous l'exemple de code:
<div class="example-container mat-elevation-z8">
<mat-table #table [dataSource]="dataSource">
<!-- Position Column -->
<ng-container matColumnDef="position">
<mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.position}} </mat-cell>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.name}} </mat-cell>
</ng-container>
<!-- Weight Column -->
<ng-container matColumnDef="weight">
<mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.weight}} </mat-cell>
</ng-container>
<!-- Symbol Column -->
<ng-container matColumnDef="symbol">
<mat-header-cell *matHeaderCellDef> Symbol </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.symbol}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
<mat-paginator #paginator
[pageSize]="10"
[pageSizeOptions]="[5, 10, 20]">
</mat-paginator>
</div>
Pagination Composant:
import {Component, ViewChild} from '@angular/core';
import {MatPaginator, MatTableDataSource} from '@angular/material';
/**
* @title Table with pagination
*/
@Component({
selector: 'table-pagination-example',
styleUrls: ['table-pagination-example.css'],
templateUrl: 'table-pagination-example.html',
})
export class TablePaginationExample {
displayedColumns = ['position', 'name', 'weight', 'symbol'];
dataSource = new MatTableDataSource<Element>(ELEMENT_DATA);
@ViewChild(MatPaginator) paginator: MatPaginator;
/**
* Set the paginator after the view init since this component will
* be able to query its view for the initialized paginator.
*/
ngAfterViewInit() {
this.dataSource.paginator = this.paginator;
}
}
export interface Element {
name: string;
position: number;
weight: number;
symbol: string;
}
const ELEMENT_DATA: Element[] = [
{position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},
{position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'},
{position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'},
{position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'},
{position: 5, name: 'Boron', weight: 10.811, symbol: 'B'},
{position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'},
{position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'},
{position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'},
{position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'},
{position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'},
{position: 11, name: 'Sodium', weight: 22.9897, symbol: 'Na'},
{position: 12, name: 'Magnesium', weight: 24.305, symbol: 'Mg'},
{position: 13, name: 'Aluminum', weight: 26.9815, symbol: 'Al'},
{position: 14, name: 'Silicon', weight: 28.0855, symbol: 'Si'},
{position: 15, name: 'Phosphorus', weight: 30.9738, symbol: 'P'},
{position: 16, name: 'Sulfur', weight: 32.065, symbol: 'S'},
{position: 17, name: 'Chlorine', weight: 35.453, symbol: 'Cl'},
{position: 18, name: 'Argon', weight: 39.948, symbol: 'Ar'},
{position: 19, name: 'Potassium', weight: 39.0983, symbol: 'K'},
{position: 20, name: 'Calcium', weight: 40.078, symbol: 'Ca'},
];
Comment puis-je parvenir à côté serveur de la pagination, ce qui pourrait déclencher sur événement de changement de la page suivante, cliquez sur page ou les changements de taille pour obtenir la prochaine série de records.
https://stackblitz.com/angular/qxxpqbqolyb?file=app%2Ftable-pagination-example.ts
Quelqu'un s'il vous plaît ?
OriginalL'auteur Vijender Reddy Chintalapudi | 2017-12-18
Vous devez vous connecter pour publier un commentaire.
Basé sur Wilfredo réponse (https://stackoverflow.com/a/47994113/986160) j'ai compilé un travail complet exemple puisque certaines pièces étaient manquantes à partir de la question. Voici un cas plus général pour le serveur-côté de la pagination et du tri en utilisant Angulaire 5 et la Conception de Matériel (encore besoin de brancher un filtrage) - j'espère que ce sera utile à quelqu'un:
Pagination Composant:
Service:
Printemps De Démarrage Reste Contrôleur De Point De Terminaison
Quelques remarques:
MatTableModule
,MatPaginatorModule
etMatSortModule
d'autres modules de la Conception de Matériel.resultsLength
(total) de la Réponse de l'en-Têtex-total-count
qui je remplir par le Ressort de Démarrage@ControllerAdvice
. Sinon, vous pouvez obtenir cette information à partir de l'objet renvoyé deEntityService
(e.gPage
pour le Printemps de Démarrage), bien que cela implique que vous aurez besoin d'utiliserany
comme type de retour ou de déclarer les objets de la classe wrapper pour l'ensemble des entités dans votre projet si vous voulez être de "type-safe".Salut! resultsLength contient le nombre total d'éléments. Pour mon cas, j'ai envoyer cette information à l'aide d'un ControllerAdvice et j'ai ajouter un en-tête qui contient le nombre total d'éléments correspondant à un JPA repositoty requête. Puis, sur la base de la pageSize paginator est de calculer le nombre de pages nécessaires. Vérification de la flèche en fonction je suis de passage dans fetchLatest(). Espérons que cette aide.
Sergey, je pense que le point est qu'ils sont pas lié à tous. Juste indirectement en fournissant des événements de mise à jour de la source de données et la lecture du total resultsLength.
pouvez-vous nous expliquer le EntityLatestPageComponent logique de classe à l'égard de l'extraction de données du back-end ? La logique à l'intérieur de ngAfterViewInit méthode de cette classe est très difficile à comprendre
vous pouvez jeter un oeil à mon dépôt github ici: github.com/zifnab87/react-admin-java-rest/tree/master/src/main/... elle est mise en œuvre pour soutenir le point de terminaison REST conventions de admin-sur-le-repos/réagir-admin par défaut de données fournisseur de: marmelab.com/react-admin/... - comme pour ngAfterViewInit je vient de prolonger de réponse: stackoverflow.com/a/47994113/986160
OriginalL'auteur Michail Michailidis
J'ai pensé à ce problème en suivant Le tableau de la récupération de données via HTTP angulaires matériel docs.
Ce que l'exemple, dit-est, l'utilisation
ngAfterViewInit()
plus observables pour gérer tout sur la table, la pagination, tri et d'autres choses dont vous avez besoin, code:Look que tout est géré à l'intérieur de la ngAfterViewInit grâce à des observables. la ligne
this.resultsLength = data.total_count;
s'attend à ce que votre service est de renvoyer les données avec un total de registre de compte, dans mon cas, je suis en utilisant springboot et de ses revenus, tout que j'ai besoin.Si vous avez besoin de plus de précisions, écrivez un commentaire et je vais mettre à jour la réponse, mais la vérification de l'exemple de la documentation vous allez comprendre.
Comment vous vous abonnez à l'événement pour le contrôle détecte lorsqu'un événement va se déclencher et d'actualiser les données.
salut merci pour la relecture rapide, mais j'ai fini à l'aide de ngxdatatable 🙂
Pouvez vous s'il vous plaît de partager le Reste de Contrôleur de la mise en œuvre? Je suis face à des questions de l'intégrer avec le Reste du Contrôleur.
J'ai compris et intégré avec le Reste du Contrôleur. Merci
OriginalL'auteur Wilfredo P
C'est une combinaison de Michail Michaïlidis réponse avec le tableau officiel de la pagination exemple, condensée en un seul fichier, et à l'aide d'un simulacre de "réseau" classe de service retourne un Observables et simule la latence.
Si vous avez un Matériel 2 + Angulaire 5 du projet et en cours d'exécution, vous devriez être en mesure de déposer ce dans un nouveau fichier de composant, de l'ajouter à votre liste de modules, et de commencer le piratage. Au moins, il devrait être une diminution de la barrière à l'entrée pour commencer.
Btw, cette question sur material2 sur le filtrage peut être utile si vous cherchez à mettre en œuvre le filtrage de vous-même.
La seule chose que je pense est le type de l'unification des règles changé, et peut-être "de retour observableOf ([]);" à l'intérieur catchError n'est pas proprement unifier avec PeriodicElement []. Essayez: "retour observableOf([] comme PeriodicElement[]);'
OriginalL'auteur infogulch