如何在无功输入中保留默认值

时间:2019-08-08 15:27:56

标签: angular angular-reactive-forms

我正在制作一个反应式表格,其中填充了数据库中的默认值。因此,用户可以自由修改一些数据,然后发送回表单。 但是,如果他选择不更改某些字段,那么我希望能够在发送表单时获取默认值。 但是,当我尝试显示此类字段的值时,出现了未定义的错误。

我尝试将默认值在创建时直接放在formControl中,并在模板的[value]属性中显示该值。

我不能确切地向您显示我在做什么,因为这又是我公司的政策,但这是一个伪代码

 form_control: new FormControl({ value: myValue, disabled: false }, [Validators.required]);

在模板中:

<input matInput placeholder="myPlaceHolder" formControlName="form_control" id="form">

我希望在输入中看到我的默认值,即使我没有触摸该字段也能获得该值。输入中什么也没有显示,当我尝试在控制台中显示输入值时,我收到未定义的消息。

谢谢您的帮助!

3 个答案:

答案 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);
    }

工作Stackblitz

答案 2 :(得分:0)

您可以使用YourForm.setValue()(如果要更改一个或更少控件的值);或ngOnInIt中的patchValue()(如果要更改n个控件的值,并且不希望任何控件转为未定义状态,则不会中断),以便在初始化时分配值。

注意:如果要处理多个formControl,最好使用patchValue。