【发布时间】:2017-04-03 05:47:58
【问题描述】:
在我的datatable project 中,开发人员可以在表格声明中声明模板以用于标题单元格和正文单元格。
<datatable>
<datatable-column name="Name">
<template let-column="column">
Header: {{column.name}}
</template>
<template let-value="value">
Hi: <strong>{{value}}</strong>
</template>
</datatable-column>
<datatable-column name="Age">
<datatable-body-template let-value="value">
I'm: <strong>{{value}}</strong> old
</datatable-body-template>
</datatable-column>
</datatable>
在上面的例子中,第一个模板是标题单元格模板,第二个是正文单元格模板,顺序很重要。如果你只声明一个模板,它只会做body cell模板。您可以看到当前是如何完成的here。
我目前确实允许您通过 Input 将 TemplateRefs 传递给 column 指令,但这种方法还可以,但作为 API 使用者,组件定义中的声明性模板是一种更简洁的方法。
还值得注意的是,不能通过 #body 和 #header 之类的方式进行命名,因为您可以拥有多个列,从而使名称不唯一。
这个 DSL 不是很直观,因为它不是很明确的,它取决于顺序。 ng-content 允许您输入选择器属性,我想知道使用模板完成类似操作的最佳方法是什么?所以像:
<datatable>
<datatable-column name="Name">
<datatable-header-template let-column="column">
Header: {{column.name}}
</datatable-header-template>
<datatable-body-template let-value="value">
Hi: <strong>{{value}}</strong>
</datatable-body-template>
</datatable-column>
</datatable>
我正在四处寻找是否可以覆盖TemplateRef,但我不确定这是否是个好主意。
说了这么多……我的问题是,我怎样才能完成命名选择器模板引用?
【问题讨论】:
标签: angularjs angular angular2-template