我正在創建一個表單,從後端獲取字段。映射後,我有這樣的事情:Angular2:使用管道動態地呈現模板
genericFilters: {
iboId: {
'display': false,
'template': ''
},
iboCode: {
'display': true,
'template': 'text_input_iboCode',
/*'template': 'text/iboCode'*/
},
iboName: {
'display': true,
'template': 'text_input_iboName'
},
iboSurname: {
'display': true,
'template': 'text_input_iboSurname'
},
iboRank: {
'display': false,
'template': 'multiselect_iboRank',
/*'template': 'select/multi_iboRank',*/
},
iboEmail: {
'display': false,
'template': 'text_input_iboEmail'
},
iboNewsletter: {
'display': true,
'template': 'simple_select_iboNewsletter',
/*'template': 'select/simple_iboNewsletter',*/
},
};
我這背後的想法是在一個應用程序級別創建表單域的每個字段類型(checkbox
,multiselect
,text
,radio
等)。並使用上面映射的JSON
將某個字段類型應用於來自後端的每個接收字段。
在我的例子中,場iboId
應有的字段類型<text_input_iboCode>
。
所以,在我看來,我不希望有這樣的事情:
<text_input_iboCode></text_input_iboCode>
<text_input_iboName></text_input_iboName>
<text_input_iboSurname></text_input_iboSurname>
我真的希望有創作形式更加抽象的,是這樣的:
<div *ngFor="let field of genericFilters | dynamicTemplateProcessorPipe">
{{field.template}} <!--This should equal '<text_input_iboName>' for example-->
</div>
問題:
我要問月亮嗎?這甚至有可能嗎?有其他更好的方法來實現嗎?我濫用@Pipe
功能嗎?
我實際上使用@Pipe
進行翻譯,格式化,在模板中循環使用objects
等。我猜我也可以使用它們來return
a <fieldTemplate>
。
我將開始研究,看看<ng-template #fieldTemplate>
的使用是否也是一種可行的選擇,同時我希望有人能夠通過@Pipe
瞭解該功能的可行性。