In meinem datatable project haben Entwickler die Möglichkeit, Vorlagen in der Tabellendeklaration für die Header-Zelle und die Körperzelle zu deklarieren.Angular2 TemplateRef Selector
<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>
in dem obigen Beispiel die erste Vorlage ist, die Kopfzelle Vorlage und die zweite ist die Körperzelle Vorlage und die Reihenfolge wichtig. Wenn Sie nur eine Vorlage deklarieren, wird nur die Körperzellenvorlage ausgeführt. Sie können sehen, wie dies derzeit durchgeführt wird here.
Ich kann derzeit TemplateRef
s über eine Input
an die Spalten-Richtlinie übergeben, aber dieser Ansatz ist in Ordnung, aber als API-Consumer, die deklarativen Vorlagen innerhalb der Komponentendefinition ist ein sauberer Ansatz.
Es ist auch erwähnenswert, dass es nicht möglich ist, Namen über etwas wie #body
und #header
zu tun, da Sie mehrere Spalten haben können, die die Namen nicht einzigartig machen.
Diese DSL ist nicht sehr intuitiv, weil es nicht sehr explizit ist, was ist und es hängt von der Reihenfolge ab. ng-content
können Sie ein Selektor-Attribut setzen, ich frage mich, was der beste Weg, um so etwas mit Vorlagen zu erreichen wäre? So etwas wie:
<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>
Ich grub herum und versuchte, zu sehen, ob ihre möglich, die TemplateRef
außer Kraft zu setzen, aber ich bin nicht sicher, das ist auch eine gute Idee.
Also mit all dem gesagt ... meine Frage, wie kann ich named selector template refs erreichen?
Ah ja, ich erlaube derzeit, dass aber es ist nicht sehr sauber wie ein api Verbraucher in meiner Meinung nach. Außerdem wird es noch unordentlicher, wenn Sie mehrere benutzerdefinierte Vorlagen für jede Spalte wünschen. Ich werde die Demo aktualisieren, um das zu zeigen. – amcdnl
Nur eine Randnotiz, Günter du bist ein Biest! Gute Chance, der Jon Skeet von Angular 2 hier auf Stack Overflow zu werden;) – Juri
Nachdem ich https://toggl.com/programming-princess gesehen hatte, wusste ich, dass ich # 1 auf SO werden muss, um auch so erwähnt zu werden: D –