【发布时间】:2020-04-22 07:29:39
【问题描述】:
我创建了一个可重用的组件来呈现一个表格。它目前适用于基本表格,但在某些情况下,我希望能够自定义表格中的单个列/单元格。
这是我在父组件中使用的代码:
<!-- PARENT TEMPLATE -->
<app-table
[headers]="headers"
[keys]="keys"
[rows]="rows">
</app-table>
// PARENT COMPONENT
public headers: string[] = ['First', 'Last', 'Score', 'Date'];
public keys: string[] = ['firstName', 'lastName', 'quizScore', 'quizDate'];
public rows: Quiz[] = [
{ 'John', 'Doe', 0.75, '2020-01-03T18:18:34.549Z' },
{ 'Jane', 'Doe', 0.85, '2020-01-03T18:19:14.893Z' }
];
以及我在子组件中使用的代码:
<!-- CHILD TEMPLATE -->
<table>
<thead>
<tr>
<td *ngFor="let header of headers">
{{ header }}
</td>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of rows">
<td *ngFor="let key of keys">
{{ render(key, row) }}
</td>
</tr>
</tbody>
</table>
// CHILD COMPONENT
@Input() headers: string[];
@Input() keys: string[];
@Input() rows: any[];
render(key: string, row: any) {
return row['key'];
}
我希望能够在我的父组件中声明一个模板来修改子组件中的数据。例如,将测验分数转换为百分比或格式化日期而不直接更改组件中的数据。我设想类似于以下内容:
<ng-template #quizScore>
{{ someReferenceToData | percent }} // This treatment gets passed to child
</ng-template>
通过将其传递给我的子组件,它将获取我渲染的数据并使用百分比管道对其进行格式化。我对ngTemplateOutlet、ngComponentOutlet、ng-content 等进行了一些研究,但不确定最佳方法。
【问题讨论】:
标签: angular angular-components angular-template