我有一个带有一些单选表单控件的表单组。一台用于照片,无人机,平面图等的收音机。
例如, this.services.photo
是一系列服务。每个单选组可让您从每个单选中选择一个选项。即,选择1张照片,选择1架无人机,选择1个平面图。
我已经能够从服务中获取数据,但是无法用数据预填充表单。如何遍历服务数据收集并设置单选按钮的值?我现在正在做的事情没有用。还是有一种更好的方法来简化设置。
export class CartComponent implements OnInit {
public myForm:FormGroup;
public services;
stepName = "cart";
constructor(private fb:FormBuilder, private bookerData:BookerService, private settings:FirebaseService, private route:ActivatedRoute, private zone:NgZone) {
this.services = this.route.snapshot.data['cartSettings'].services
}
ngOnInit() {
this.myForm = this.fb.group({
photo : new FormControl(this.services.photo),
drone: new FormControl(this.services.drone),
floorplan: new FormControl(this.services.floorplan),
video: new FormControl(this.services.video)
})
if(this.bookerData.isValidStep(this.stepName)){
let data = this.bookerData.getStepData(this.stepName)
console.log(data);
_.forOwn(data, (v, k)=>{
this.myForm.get(k).patchValue(v)
})
}
}
}
答案 0 :(得分:2)
FormControl构造函数接受您可以使用的“初始状态”值。
email: new FormControl('default value', Validators.compose([
Validators.required,
Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
])),
如果您的数据晚于启动(ngOnInit),我建议您使用ngModel binding,以在获取表单数据时更新值。