Я вызываю функцию публикации на уровне обслуживания, используя Promise, который возвращает мне JSONArray. Я могу получить его на уровне компонентов, но не могу присвоить переменной.
Я пробовал:
config;
ngOnInit() {
this.dataService.getTemplateData(this.templateId).then(result => this.config = result)
.catch(error => console.info(error));
}
:: result is printing jsonArray properly
В консоли появляется следующая ошибка.
AppComponent.html:34 ERROR TypeError: Cannot read property 'forEach' of undefined
at DynamicFormComponent.webpackJsonp.../../../../../src/app/dynamic-form/containers/dynamic-form/dynamic-form.component.ts.DynamicFormComponent.createGroup (dynamic-form.component.ts:24)
at DynamicFormComponent.webpackJsonp.../../../../../src/app/dynamic-form/containers/dynamic-form/dynamic-form.component.ts.DynamicFormComponent.ngOnInit (dynamic-form.component.ts:19)
at checkAndUpdateDirectiveInline (core.es5.js:10843)
at checkAndUpdateNodeInline (core.es5.js:12341)
at checkAndUpdateNode (core.es5.js:12284)
at debugCheckAndUpdateNode (core.es5.js:13141)
at debugCheckDirectivesFn (core.es5.js:13082)
at Object.eval [as updateDirectives] (AppComponent.html:34)
at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13067)
at checkAndUpdateView (core.es5.js:12251)
Я ожидаю:
config = [
{
"type": "input",
"label": "Full name",
"name": "name",
"placeholder": "Enter your name"
},
{
"type": "select",
"label": "Favourite food",
"name": "food",
"options": ["Pizza", "Hot Dogs", "Knakworstje", "Coffee"],
"placeholder": "Select an option"
},
{
"label": "Submit",
"name": "submit",
"type": "button"
},
];
Вот моя логика .html: -
<div class = "app">
<dynamic-form [config] = "config">
</dynamic-form>
</div>
Мой уровень обслуживания:
getTemplateData (data: any): Promise {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http
.post(this.templateDataUrl, data, options)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
Консультируйте результат журнала и покажите его.
Я включил свой html-контент и содержание служебного уровня в вопрос
У вас есть ошибка на вашем app.component.ts. Пожалуйста, включите код, содержащий forEach
эта ошибка приходит ко мне, когда я назначаю свой результат jsonArray конфигурации, как указано в приведенном выше коде



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пожалуйста, поделитесь полным кодом dynamic-form.component. проблему будет легко отследить.
DynamicFormComponent.createGroup (dynamic-form.component.ts:24)
в строке выше config не определен, поэтому выдает ошибку
Вы должны вызвать метод creatGroup(), подобный этому
this.dataService.getTemplateData(this.templateId).then(result => {
this.config = result;
this.creatGroup()
}).catch(error => console.info(error));
Обратитесь к добавленному html и служебному слою в моем вопросе, который я только что отредактировал. Если вам нужен какой-либо другой код файла, плохо поделитесь. Спасибо
Не могли бы вы поделиться кодом для файла dynamic-form.component.ts и dynamic-form.component.html?
Что ж, проблема решена. Я правильно инициализировал "config" и теперь могу назначить. Спасибо за помощь всем
Правильно инициализировав переменную конфигурации, я смог назначить данные параметру
config: any[] = [];
Ошибка находится в вашем html для этого компонента, не могли бы вы добавить ее в вопрос.
AppComponent.html:34