angular - 具有两个嵌套可扩展行的 Angular 11 表
问题描述
我很难实现具有两层嵌套可扩展行的表。
我正在关注这个示例,并且添加了第二级扩展,但它不起作用。
在这里你可以找到我的作品。
基本上我想点击“Street 1, 78542, Kansas”行并打开它,但我收到了类似未定义的错误。
错误在哪里?我只是将第一级可扩展行复制到嵌套级别。
解决方案
在你html
这里
<tr mat-header-row *matHeaderRowDef="innerDisplayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: innerDisplayedColumns;"
[class.example-element-row]="row.addresses?.data.length"
[class.example-expanded-row]="innerExpandedElement === row" (click)="toggleSecondRow(row)">
</tr>
这是因为row.addresses.data
未定义。
您必须更新第 44 行
[class.example-element-row]="row.addresses?.data.length"
至
[class.example-element-row]="row.addresses?.data?.length"
更新
在
toggleSecondRow(element: Address) {
console.log('INNER ELEMENT ', element);
element.addresses &&
(element.addresses as MatTableDataSource<Address>).data.length
? (this.innerExpandedElement =
this.innerExpandedElement === element ? null : element)
: null;
this.cd.detectChanges();
}
您的对象(element.addresses as MatTableDataSource<Address>).data
未定义。这就是为什么你有错误。如果要切换嵌套行,则需要将数据放入其中。
向console.log
我们展示
INNER ELEMENT
addresses: Array[1]
0: Object
city: "Kansas"
street: "Street 1"
zipCode: "78542"
__proto__: Object
city: "Kansas"
street: "Street 1"
zipCode: "78542"
__proto__: Object
你element
有addresses
。但是没有addresses
没有data
属性。
推荐阅读
- php - 如何在 Laravel 的资源目录中存储图像
- dart - 如何在颤振中调用 URL https://key:secret@payment.api/payments/transactionid/update
- intellij-plugin - 从 IntelliJ 插件自动启用自定义检查
- php - 将数组传递给函数 PHP
- php - PHP数组将点表示的键解析为多维数组
- javascript - 诗浓在测试时不会对我的实习生进行检查。(ExpressJS)
- python - 将类别特定的列和值添加到数据框
- javascript - 如何在jQuery中删除特定表格行下方的所有表格行
- jquery - 为什么我的 JQuery AjaxQ 无法访问我的 Laravel 应用程序中的路由链接
- hyperledger-fabric - Hyperledger Fabric 交叉通信