web-dev-qa-db-fra.com

Erreur Angular6 Material6: "Il ne peut y avoir qu'une seule ligne par défaut sans la fonction de prédicat When."

J'essaie de mettre en œuvre le Table with expandable rows de https://material.angular.io/components/table/examples mais j'obtiens cette erreur:

There can only be one default row without a when predicate function.

Cette erreur vient du fait que j'ai deux <tr mat-row ..., les deux sans prédicat when (comme dans l'exemple). Si j'en enlève une, l'erreur disparaît.

De ma propre enquête, j'ai trouvé que cette fonctionnalité est nouvelle dans Material. Je suis passé à @ angular/material @ latest et à @ angular/cdk @ latest et j'ai toujours l'erreur.

Est-ce que quelqu'un sait ce que je dois faire pour implémenter le tableau comme dans l'exemple de la documentation? https://material.angular.io/components/table/examples

Mes versions:

Angular CLI: 6.0.8
Node: 8.11.2
OS: win32 x64
Angular: 6.0.4
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.6.8
@angular-devkit/build-angular     0.6.8
@angular-devkit/build-optimizer   0.6.8
@angular-devkit/core              0.6.8
@angular-devkit/schematics        0.6.8
@angular/cdk                      6.3.1
@angular/cli                      6.0.8
@angular/flex-layout              6.0.0-beta.16
@angular/material                 6.3.1
@ngtools/webpack                  6.0.8
@schematics/angular               0.6.8
@schematics/update                0.6.8
rxjs                              6.2.0
TypeScript                        2.7.2
webpack                           4.8.3
17
GoTo

Il se trouve que je manquais de la directive multiTemplateDataRows de <table> tag:

<table mat-table [dataSource]="licenses" multiTemplateDataRows ...
62
GoTo

Cette erreur peut également apparaître si la fonction de votre prédicat when n'est pas définie. Donc si vous avez

<mat-tree-node *matTreeNodeDef="let node; when: hasChild">

et hasChild n'est pas défini, vous pourriez obtenir cette erreur.

9
adamdport

j'ai eu le même problème. J'ai mis à jour @ angular/cdk & @ angular/material à 6.4.7. Et tout fonctionne bien. Bien sûr, vous avez également besoin de multiTemplateDataRows attr