web-dev-qa-db-ja.com

Angular6 Material6エラー:「when述語関数なしのデフォルト行は1つだけです。」

https://material.angular.io/components/table/examples からTable with expandable rowsを実装しようとしていますが、このエラーが発生します。

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

このエラーは、2つの<tr mat-row ...があり、両方ともwhen述部がない(例のとおり)という事実に起因しています。削除すると、エラーは消えます。

私自身の調査から、この機能はマテリアルの新機能であることがわかりました。 @ angular/material @ latestおよび@ angular/cdk @ latestにアップグレードしても、まだエラーが発生しました。

ドキュメントの例のように、テーブルを実装するために私がしなければならないことを誰もが知っていますか? https://material.angular.io/components/table/examples

私のバージョン:

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

<table>タグのディレクティブmultiTemplateDataRowsが欠落していたことがわかりました。

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

このエラーは、when述部の関数が未定義の場合にも表示される可能性があります。あなたが持っているなら

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

hasChildが未定義の場合、そのエラーが発生する可能性があります。

9
adamdport

私は同じ問題を抱えていました。 @ angular/cdkおよび@ angular/materialを6.4.7に更新しました。そして、すべて正常に動作します。もちろん、multiTemplateDataRows attrも必要です。