angular - 角材料标题
问题描述
如何允许角度材料中的重复标题值。
我有多个标题,这里的标题值是相同的。它给出了错误:-
提供了重复的列定义名称
解决方案
@Input('matColumnDef') 名称:字符串
此列的唯一名称。
(强调我的)
我假设(因为您没有共享任何代码)您收到此错误的原因是因为您在显示的列数组中多次列出了相同的名称。
解决此问题的一种方法是创建新对象,其中包含属性/列名称以及用于 angular 内部使用的 uniqueIdentifier(在我的示例中,我将它们放在一个名为 的数组中columnObjects
)
然后组件变为
export class TableBasicExample {
// displayedColumns = ['position', 'name', 'name', 'weight', 'symbol'];
dataSource = ELEMENT_DATA;
columnObjects = [
{ columnId: 'position', propertyName: 'position' },
{ columnId: 'name1', propertyName: 'name' },
{ columnId: 'name2', propertyName: 'name' },
{ columnId: 'weight', propertyName: 'weight' },
{ columnId: 'symbol', propertyName: 'symbol' }
];
columnIds = this.columnObjects.map(c => c.columnId);
}
并且可以在模板中使用,例如:
<div class="example-container mat-elevation-z8">
<mat-table #table [dataSource]="dataSource">
<ng-container [matColumnDef]="col.columnId" *ngFor="let col of columnObjects">
<mat-header-cell *matHeaderCellDef> {{ col.propertyName }} </mat-header-cell>
<mat-cell *matCellDef="let element"> {{ element[col.propertyName] }} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="columnIds"></mat-header-row>
<mat-row *matRowDef="let row; columns: columnIds;"></mat-row>
</mat-table>
</div>
请注意我是如何只传递columnIds
到有角材料的内部的。这是因为这些是独一无二的。
希望这很清楚。
推荐阅读
- django - 是否可以将 pipenv 用于 django-cookiecutter?
- java - java如何在内存中分配对象的属性?
- java - Eclipse SWT setPartName 有效, setTitleImage 无效。为什么?
- python-3.x - 多线程python3服务器
- sas - SAS: Changing labels by reading from table
- mongoose - 使用 typegoose 将项目添加到 Ref 数组
- python - 用python在树中查找匹配的节点
- python - python - 单元测试记录结果文件
- plsql - DML 发生后提示用户,然后执行 DDL 的设计模式?
- google-places-api - Google 地方信息“地址”类型限制无法正确过滤精确地址