编码器。你必须清楚你想要得到什么。让我举个例子:
假设你想获得一些类似的东西(记住这是一个例子:你决定了你想要获得什么)
data=[
{id:1004,answer:[100401,100402]},
{id:1005,answer:[100503]},
{id:1006,answer:[100603,100606]}
]
其他例子只能得到[100401,100402,100503,100603,100606]甚至是字符串“100401,100402,100503,100606,100606”
嗯,事情真的没那么容易。当我们有“checkBox”时,复选框只有两个可能的值:true或false,所以我们的对象变成了一些类似
data=[
{id:1004,answer:[true,true]},
{id:1005,answer:[false,false,true]},
{id:1006,answer:[false,false,true,false,false,true]}
]
您可以在link 中看到一个讨论(最后有一个自定义的 FormControl 来管理复选框列表)
记住同样的例子,在你的组件中在构造函数中注入 formBuilder
constructor(private fb:FormBuilder){}
并在 ngOnInit() 中创建表单。首先是数据-暂时忘记json-
ngOnInit() {
this.myForm = new FormArray([
this.fb.group({
id: 1004,
answers: new FormArray([new FormControl(true), new FormControl(true)])
}),
this.fb.group({
id: 1005,
answers: new FormArray([new FormControl(false),new FormControl(false),new FormControl(true)])
}),
])
}
和我们的 .html 一样
<div *ngFor="let question of myForm.controls" >
<div [formGroup]="question">
<input formControlName="id">
<div formArrayName="answers">
<div *ngFor="let item of question.get('answers').controls;let i=index">
<input type="checkbox" [formControlName]="i">
</div>
</div>
</div>
</div>
{{myForm?.value|json}}
现在是思考 .json 文件的时候了。看到我们的 .json 可以创建表单并在我们的表单中显示选项
ngOnInit() {
let group:FormGroup[]=[]
this.JSON.forEach(x=>{
group.push(this.fb.group({
id:x.id,
answers:new FormArray(x.answers.map(x=>new FormControl(false)))
}))
})
this.myForm = new FormArray(group)
}
并“装饰”我们的 .html 以显示选项
<div *ngFor="let question of myForm.controls;let j=index" >
{{JSON[j].question}}
<div [formGroup]="question">
<input formControlName="id">
<div formArrayName="answers">
<div *ngFor="let item of question.get('answers').controls;let i=index">
<input type="checkbox" [formControlName]="i">{{JSON[j].answers[i].answer}}
</div>
</div>
</div>
</div>
好吧,你有组件来显示表单,试着看看“什么是什么”来调整@Inputs()