Bonjour à tous,

Je sollicite votre aide, car je galère depuis une semaine sur un problème. J'ai un tableau de données "mat-table" d'Angular Material, j'ai essayé d'utiliser le MatPaginator comme sur la doc de Material mais ça ne fonctionne pas avec DataSource '@angular/cdk/collections';.

Vous pouvez m'éclairez afin que je trouve une solution s'il vous plaît ?

Merci d'avance

HTML
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<div style="padding: 32px">
 
  <div class="example-container mat-elevation-z8">
    <mat-table #table [dataSource]="dataSource">
 
      <ng-container matColumnDef="code_cip">
        <mat-header-cell *matHeaderCellDef> Code CIP </mat-header-cell>
        <mat-cell *matCellDef="let element"> {{element.code_cip}} </mat-cell>
      </ng-container>
 
      <ng-container matColumnDef="libelle">
        <mat-header-cell *matHeaderCellDef> Libellé </mat-header-cell>
        <mat-cell *matCellDef="let element"> {{element.libelle}} </mat-cell>
      </ng-container>
 
      <ng-container matColumnDef="date_peremption">
        <mat-header-cell *matHeaderCellDef> Date de peremption </mat-header-cell>
        <mat-cell *matCellDef="let element" [satPopoverAnchorFor]="p" (click)="p.open()" id="market">
          <ng-container *ngIf="element.date_peremption">
              {{element.date_peremption}}
          </ng-container>
          <span class="add-comment" *ngIf="!element.date_peremption"></span>
 
          <sat-popover #p hasBackdrop xAlign="start" yAlign="start" (closed)="updateDate(element, $event)">
            <app-editdate [value]="element.date_peremption"></app-editdate>
          </sat-popover>
        </mat-cell>
      </ng-container>
 
      <ng-container matColumnDef="prix_vente">
        <mat-header-cell *matHeaderCellDef> Prix de vente </mat-header-cell>
        <mat-cell *matCellDef="let element"> {{element.prix_vente}} CFA </mat-cell>
      </ng-container>
 
      <ng-container matColumnDef="qte">
        <mat-header-cell *matHeaderCellDef> Quantité </mat-header-cell>
        <mat-cell *matCellDef="let element" [satPopoverAnchorFor]="p" (click)="p.open()" id='ttt'>
          <!-- [ngStyle]="{'background-color':element.qte !== element.qte  ? 'green' : '' }" -->
          <ng-container *ngIf="element.qte">
            {{element.qte}}
          </ng-container>
          <span class="add-comment" *ngIf="!element.qte"></span>
 
          <sat-popover #p hasBackdrop xAlign="start" yAlign="start" (closed)="update(element, $event)">
            <app-edit [value]="element.qte"></app-edit>
          </sat-popover>
        </mat-cell>
      </ng-container>
 
      <ng-container matColumnDef="qte_totale">
        <mat-header-cell *matHeaderCellDef> Quantité Totale </mat-header-cell>
        <mat-cell *matCellDef="let element"> {{element.qte_totale}} </mat-cell>
      </ng-container>
 
 
      <mat-header-row *matHeaderRowDef="displayedColumns sticky: true"></mat-header-row>
      <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
    </mat-table>
    <mat-paginator #paginator [pageSize]="20">
    </mat-paginator>
 
  </div>
 
</div>


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
  export class donneesSource extends DataSource<any> {
 
 
    private dataSubject = new BehaviorSubject<Element[]>([]);
 
 
 
    data() {
      return this.dataSubject.value;
    }
 
    update(data) {
      this.dataSubject.next(data);
    }
 
    constructor(data: any[]) {
      super();
      this.dataSubject.next(data);
    }
 
    connect(): Observable<Element[]> {
      return this.dataSubject;
 
    }
 
    disconnect() {}
 
  }