Създавам приложение angular 6, където използвам динамична форма Angular
Тук направих вложени полета за въвеждане, в които ще има две текстови полета за въвеждане в началния етап и при щракване върху бутона за добавяне следващите две полета за въвеждане ще се добавят при всяко щракване върху бутона за добавяне.
Тук всичко работи добре по отношение на него..
Тук използвах стойностите в question-service.ts като,
new TextboxQuestion({
elementType: "textbox",
class: "col-12 col-md-4 col-sm-12",
key: "project_name",
label: "Project Name",
type: "text",
value: '',
required: true,
order: 1
}),
new TextboxQuestion({
elementType: "textbox",
class: "col-12 col-md-4 col-sm-12",
key: "project_desc",
label: "Project Description",
type: "text",
value: '',
required: true,
order: 2
}),
new ArrayQuestion({
key: 'myArray',
value: '',
order: 3,
children: [
new TextboxQuestion({
elementType: "textbox",
class: "col-12 col-md-4 col-sm-12",
key: "property_one",
label: "Property One",
type: "text",
value: '',
required: true,
order: 3
}),
new TextboxQuestion({
elementType: "textbox",
class: "col-12 col-md-4 col-sm-12",
key: "property_two",
label: "Property Two",
type: "text",
value: '' ,
required: true,
order: 4
})
]
})
Което трябва да променя като данните трябва да са от json за всяко харесване,
jsonData: any = [
{
"elementType": "textbox",
"class": "col-12 col-md-4 col-sm-12",
"key": "project_name",
"label": "Project Name",
"type": "text",
"value": "",
"required": true,
"order": 1
},
{
"elementType": "textbox",
"class": "col-12 col-md-4 col-sm-12",
"key": "project_desc",
"label": "Project Description",
"type": "text",
"value": "",
"required": true,
"order": 2
},
{
"elementType": "array",
"key": "myArray",
"value": "",
"order": "3",
"children": [
{
"elementType": "textbox",
"class": "col-12 col-md-4 col-sm-12",
"key": "property_one",
"label": "Property One",
"type": "text",
"value": "",
"required": true,
"order": 3
},
{
"elementType": "textbox",
"class": "col-12 col-md-4 col-sm-12",
"key": "property_two",
"label": "Property Two",
"type": "text",
"value": "",
"required": true,
"order": 4
}
]
}
];
Stackblitz без JSON:
https://stackblitz.com/edit/angular-x4a5b6-xcychx
Stackblitz с JSON:
https://stackblitz.com/edit/angular-x4a5b6-u6ecpk
Същият сценарий, който се случва в stacblitz връзка без json, трябва да се случи, докато се зарежда JSON..
Дадох следното вътре getQuestions()
като,
getQuestions() {
console.log(this.jsonData);
let questions: any = [];
this.jsonData.forEach(element => {
if (element.elementType === 'textbox') {
questions.push(new TextboxQuestion(element));
} else if (element.elementType === 'array') {
questions.push(new ArrayQuestion(element));
}
});
return questions.sort((a, b) => a.order - b.order);
}
}
За нормално текстово поле работи, но докато за децата не работи при щракване върху бутона за добавяне (текстовите полета не се показват), дъщерните текстови полета не се добавят.
Моля, помогнете ми да постигна същия резултат, който се случва в връзка 1 също трябва да се случи, докато използване на JSON в връзка 2 .. И също така любезно не включвайте никакви библиотеки на трети страни във всичко отива в ядрото ъглово.