我正在制作一个反应式表格,其中填充了数据库中的默认值。因此,用户可以自由修改一些数据,然后发送回表单。 但是,如果他选择不更改某些字段,那么我希望能够在发送表单时获取默认值。 但是,当我尝试显示此类字段的值时,出现了未定义的错误。
我尝试将默认值在创建时直接放在formControl中,并在模板的[value]属性中显示该值。
我不能确切地向您显示我在做什么,因为这又是我公司的政策,但这是一个伪代码
form_control: new FormControl({ value: myValue, disabled: false }, [Validators.required]);
在模板中:
<input matInput placeholder="myPlaceHolder" formControlName="form_control" id="form">
我希望在输入中看到我的默认值,即使我没有触摸该字段也能获得该值。输入中什么也没有显示,当我尝试在控制台中显示输入值时,我收到未定义的消息。
谢谢您的帮助!
答案 0 :(得分:1)
您可以将表单控件设置为空字符串,然后使用setValue()或patchValue()设置输入的值。如果用户要编辑默认值,则可以。他们不编辑的输入仍将传递到表单中
sampleForm= new FormGroup({
firstName: new FormControl('', Validators.required),
lastName: new FormControl('', Validators.required),
});
this.sampleForm.patchValue({
firstName: this.sample.firstName,
lastName: this.sample.lastName,
});
答案 1 :(得分:1)
您可以使用formBuilderConfig.propsConfig
中的@rxweb/reactive-form-validators
动态设置formControl的默认值。通过使用此选项,即使您没有触摸该字段,也将能够获取默认值。
您只需要导入RxFormBuilder和FormBuilderConfiguration。
import { RxFormBuilder,FormBuilderConfiguration } from '@rxweb/reactive-form-validators';
然后像这样设置propsConfig:
ngOnInit() {
let user = new User();
var formBuilderConfig = new FormBuilderConfiguration();
formBuilderConfig.propsConfig = {'emailAddress':{defaultValue:"john@gmail.com"}}
this.userFormGroup = this.formBuilder.formGroup(user,formBuilderConfig);
}
答案 2 :(得分:0)
您可以使用YourForm.setValue()(如果要更改一个或更少控件的值);或ngOnInIt中的patchValue()(如果要更改n个控件的值,并且不希望任何控件转为未定义状态,则不会中断),以便在初始化时分配值。
注意:如果要处理多个formControl,最好使用patchValue。