【发布时间】:2018-07-08 05:28:44
【问题描述】:
我有一个人员列表/表格,我可以按名字、姓氏等排序。
当我点击一个标题(比如名字)时,它会使用查询字符串参数进行路由
?sort=firstname,如果我再次单击它,它会将参数更改为
?sort=firstname-desc。同时,我需要一个图标在参数旁边显示一个向上或向下箭头,表示升序或降序排序。这是一个非常标准的排序方案。
我当前的模板如下所示:
<div class="heading">
First name
<a [routerLink] [queryParams]="sortParams('firstname')">
<img src="assets/icons/icon-sort-down.svg" class="icon-normal" [class.flip]="showFlip('firstname')">
</a>
</div>
这很好用,因为我在组件中有一些逻辑来处理 sortParams 和 showFlip 但我想简化它,所以我可以轻松地将相同的逻辑添加到多个字段和多个视图中,而无需需要额外的重复组件逻辑。
创建指令似乎是可行的方法,但是当我创建指令时,我通常只使用@HostBinding 修改 dom 属性。怎么可能写一个指令(称之为排序)来允许我定义这样的模板:
<div class="heading">
First name
<a [sorting]="'firstname'"></a>
</div>
该指令需要修改 a 标签以包含 routerLink 和 queryParams,并添加一些非静态模板内容。我知道我可以在我的指令中注入ViewContainerRef,但是从那里,我的指令知识需要一些帮助。
【问题讨论】:
标签: angular angular2-directives angular-directive