无法将值设置为formControl

时间:2019-05-14 08:23:41

标签: angular angular6 angular7 angular-reactive-forms angular-forms

我正在尝试通过获取来自路由名称 ref 的变量的值来为formConfrol字段 ReferCode 设置值, 我无法设置的地方

我正在共享代码

ts>

ReferCode = new FormControl('');
  Refrr : any;
  constructor(

    private _route: ActivatedRoute,
  ) {
     this.user = new FormGroup({
    'ReferCode': this.ReferCode,
    });
    this._route.queryParams.subscribe(params => {
     this.Refrr = params['referral'];
     console.log(this.Refrr);
     if(this.Refrr){
     this.user.controls['ReferCode'].setValue(this.Refrr);
     this.user.controls['ReferCode'].patchValue(this.Refrr);
     }

html

 <form class="signin-form" novalidate (ngSubmit)="user_signup(user)" [formGroup]="user">

            <mat-form-field class="form-input-width">
              <input
                matInput
                placeholder="Enter Referral Code: (Optional)"
                value=""
                name="ReferCode"
                [(ngModel)]="referCode"
                formControlName="ReferCode"
              />

      <button mat-button >
        Sign Up
      </button>
    </form>

4 个答案:

答案 0 :(得分:0)

在模板驱动的表单中将值设置为表单的一部分

@ViewChild('f') signupForm: NgForm;
this.signupForm.form.patchValue({
userData: {
    username: suggestedName
  }
});

以反应形式,您可以使用

signupForm: FormGroup;
this.signupForm.patchValue({
userData: {
    username: 'suggestedName'
  }
});

您可以在ngOnInit()内部或使用click事件(在方法内)设置默认值。

答案 1 :(得分:0)

  

此功能在此级别上与setValue在功能上相同。为了与FormGroups和FormArrays上的patchValue对称存在,它的行为确实有所不同。

因此您的HTML代码为

<form class="signin-form" novalidate (ngSubmit)="user_signup(user)" [formGroup]="user ">
    <mat-form-field class="form-input-width">
        <input matInput placeholder="Enter Referral Code: (Optional)" name="ReferCode" formControlName="ReferCode" />
  </mat-form-field>
<button mat-button>Sign Up</button>
</form>

Working_Demo

答案 2 :(得分:0)

最好的方法就是使用patchValue()

尝试一下,将来肯定会对您有很大帮助

this.user.patchValue({ReferCode:this.Refrr})

答案 3 :(得分:0)

HTML:

<form class="signin-form" novalidate (ngSubmit)="user_signup(user)" [formGroup]="user">
    <mat-form-field class="form-input-width">
        <input
                matInput
                placeholder="Enter Referral Code: (Optional)" 
                name="ReferCode" 
                formControlName="ReferCode"
        />
    </mat-form-field>
        <button mat-button >
            Sign Up
        </button>
</form>

TS:

this.user.setValue('ReferCode', this.Refrr);