K O*_*Oul 4 angular2-forms angular2-formbuilder
我需要在FormBuiler中的嵌套控件中设置一个值,模型如下:
this.addAccForm = this.fb.group({
accid: ['', Validators.required],
status: '',
cyc: this.fb.array([
this.initCyc(),
])
})
initCyc() {
return this.fb.group({
cycid: ['', Validators.required],
name: ['', Validators.required],
description: ['', Validators.required],
status: ['', Validators.required],
det: this.fb.group({
dcycid: ['', Validators.required],
status: ['', Validators.required]
})
})
Run Code Online (Sandbox Code Playgroud)
我需要设置一个值cycid和dcycid但我坚持它,我试图使用以下行,但它没有帮助:
this.addAccForm.patchValue({cyc: { [0]: {cycid: 1234567 }}});
Run Code Online (Sandbox Code Playgroud)
//
this.addAccForm.patchValue({cyc: { [0]: { det : {dcycid: 9876543}}}});
Run Code Online (Sandbox Code Playgroud)
知道它应该怎么样?
这对我有用:
this.addAccForm.patchValue({'cyc': {cycid: 1234567 }});
Run Code Online (Sandbox Code Playgroud)
尝试使用theese代码
this.addAccForm.patchValue({cyc: {cycid: 1234567 }});
this.addAccForm.patchValue({cyc: { det : {dcycid: 9876543}}});
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是
(< FormGroup >this.addAccForm.controls['cyc']).controls['cycid'].patchValue('1234567');
(< FormGroup >this.addAccForm.controls['cyc']).controls['det'].controls['dcycid'].patchValue('1234567');
Run Code Online (Sandbox Code Playgroud)
使用该方法更新 Angular 的嵌套字段FormGroup看起来更干净get,如下所示:
this.addAccForm.get('cyc.det.dcycid').patchValue(9876543);
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你喜欢对象语法:
this.addAccForm.get('cyc.det').patchValue({ dcycid: 9876543 });
Run Code Online (Sandbox Code Playgroud)
这是我解决问题的方法:
(this.addAccForm.controls['cyc'].at(0)).patchValue({cycid: 12345 });
//
(this.addAccForm.controls['cyc'].at(0)).controls['det'].at(0).patchValue({dcycid: 9876543});
Run Code Online (Sandbox Code Playgroud)
谢谢
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |