Я создаю форму, где я получаю поля из бэкэнда. После сопоставления у меня есть что-то вроде этого:
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
.