onGetForm() {
this.serverData.getData('questionnaire/Student Course Review')
.subscribe(
(response: Response) => {
this.questionnaire = response.json();
let key = Object.keys(this.questionnaire);
for (let i = 0; i < key.length; i++) {
this.currentQuestionsValue.push(this.questionnaire[key[i]])
}
},
(error) => console.log('Form Error', error)
)
}
我的html循环,注意:我只是想迭代
<form>
<div *ngFor="let data of currentQuestionsValue">
<div *ngFor="let d of data.items ">
<strong> {{ d.sno }}). </strong>
<span>{{ d.question}}</span>
<div *ngFor="let op of d.options">
<label>
<input type="radio" name="option">
<span>{{ op }}</span>
</label>
</div>
</div>
</div>
</form>
在json数据上运行循环时出现以下错误。
错误错误:无法找到不同的支持对象&#39; [object Object]&#39;类型&#39;对象&#39;。 NgFor仅支持绑定到Iterables,例如Arrays。
答案 0 :(得分:1)
此处options
不是array
,只是简单的json object
,因为以下行您会收到错误:
<div *ngFor="let op of d.options">
解决方案:
组件方:
objectKeys = Object.keys;
模板方:
<div *ngFor="let key of objectKeys(d.options)">
<label>
<input type="radio" name="option">
<span>{{ d.options[key] }}</span>
</label>
</div>
供参考: WORKING DEMO
答案 1 :(得分:0)
这是因为你的第二个ngFor循环试图遍历一个对象。
选项值是一个具有属性&#39; option1&#39;,&#39; option2&#39; ...;
所以你必须像你一样把它改成数组。
this.questionnaire = response.json();
let key = Object.keys(this.questionnaire);
for (let i = 0; i < key.length; i++) {
this.currentQuestionsValue.push(this.questionnaire[key[i]])
}
for( let j = 0; j < this.currentQuestionsValue.length ; j++) {
this.currentQuestionsValue[j].options = Object.keys(this.currentQuestionsValue[j].options).map(i => options[i])
}