【发布时间】:2020-01-01 04:16:31
【问题描述】:
我想创建一个表格过滤器组件,它符合 Angular Material 中 matSort/mat-sort-header 组件的结构和语法。它的创建方式是将matSort 指令放在<table> 元素上,然后对于要排序的每一列,放置mat-sort-header 指令。然而,有趣的是,没有给定mat-sort-header 指令元素的列只不过是<th> 中的文本,而具有mat-sort-header 指令的列则使该列(包含包含的文本)变为变成一个按钮。
我查看了@angular/material/sort(https://github.com/angular/components/blob/master/src/material/sort/sort-header.html)的源代码,发现mat-sort-header实际上被修饰为@Component,而不是@Directive,并带有自己的模板。但是,这有点违背我对组件的理解。我知道 Component is 是一个指令,但我不知道您可以将指令放在原生 HTML 元素中并让内部结构生成 HTML。
以下是创建可排序表头的方法:
<table mat-table [dataSource]="dataSource" matSort class="mat-elevation-z8">
<!-- Position Column -->
<ng-container matColumnDef="position">
<th mat-header-cell *matHeaderCellDef mat-sort-header> No. </th>
<td mat-cell *matCellDef="let element"> {{element.position}} </td>
</ng-container>
...
我将 mat-sort-header 作为属性指令读取,但源代码显示它是一个 组件指令。这是在任何地方的文档中吗?这可行吗?
同样,如果我想创建自己的过滤器/排序组件来与这种结构平行,Angular 支持吗?
【问题讨论】:
-
您还可以在MatDatepicker's code 上找到它,其中
mat-calendar-bodyselector 引入了所有表格主体(tr's 和td's)。 -
谢谢!我只是在他们的文档中错过了这一点吗?这回答了我关于创建可以合并到角材料中的组件的许多问题。
标签: html angular angular-material components