【发布时间】:2019-06-22 21:43:33
【问题描述】:
我有一个这样的 Json 数据:
assets/details.json
{
"name" : "john",
"age" : 20,
"address" : [{
"main": "address1",
"sub": "address2"
},
{
"main": "add1",
"sub": "add2"
}]
}
我想用 patchValue 以 Angular 形式显示所有 JSON 数据。
我试过了。
app.component.ts
export class AppComponent {
data: FormGroup
constructor(private FB: FormBuilder, private service: DataService) { }
ngOnInit() {
this.data = this.FB.group({
name: [''],
age: [''],
address: this.FB.array([
this.addAddress()
])
})
this.getData()
}
addAddress(): FormGroup {
return this.FB.group({
main: [''],
sub: [''],
})
}
getData() {
this.service.getData('../assets/details.json').subscribe((data) => {
this.data.patchValue({ data })
}
}
我的 HTML 页面是这样设计的:
app.component.html
<form [formGroup]="data" (ngSubmit)="onSubmit()">
<input formControlName="name" type="text" class="form-control col-sm-8">
<input formControlName="age" type="number" class="form-control col-sm-8">
<div formArrayName="address" *ngFor="let d of data.get('address').controls; let i = index;">
<div [formGroupName]="i">
<input formControlName="main" type="text" class="form-control">
<input formControlName="sub" type="text" class="form-control" />
</div>
</div>
</form>
但没有什么能像我预期的那样工作。没有什么可以填写表格。我不知道该怎么做。
如何在表单字段中获取所有这些 JSON 数据?
【问题讨论】:
-
您需要在 formControl 而不是 formGroup 上调用 patchValue() 方法
-
我听不懂。你能解释更多吗?
-
如果不是,那么如何在 formGroup 中做到这一点?我是 Angular 新手。
-
它是否适用于
this.data.patchValue(data)而不是this.data.patchValue({data})? -
尝试修补控件,例如this.data.controls.name.patchValue(data.name); 然后其余部分相同