'FormControl returning empty value in Angular 2

I am using a form

<form [formGroup]="form">
    <input type="text" value={{userDetails.first_name}} formControlName = "firstName">
    <button type="submit" data-action="save" (click)="onSubmit(form.value)">
</form>

Here userDetails.first_name value is Tom. It is visible on UI inside text box ; but when I submit form form.firstName is giving me empty value.



Solution 1:[1]

To get the value you should check form.value.firstName not form.firstName.

To have a better idea of how form is structured, do a console.log(this.form) on form submit.

Solution 2:[2]

Declare form group :

private userForm: FormGroup;

Initialize user form like this:

  userForm = form.group({
          firstName:  [firstName, [Validators.required]]
        });

Declare your form in HTML like this:

 <form class="example-form " [formGroup]="userForm"
                  (ngSubmit)="onSubmit(userForm)">
    <input type="text" value={{userDetails.firstName}} formControlName = 
      "firstName">
    <button type="submit" data-action="save"/>
 </form>

Make your onSubmit() method like this:

onSubmit({formValue, valid}: { formValue: UserDetails, valid: boolean }) {
    const firstName= value.firstName;
 }

Solution 3:[3]

html

<form [formGroup]="form">
    <input type="text" formControlName="firstName">
    <button type="submit" data-action="save" (click)="onSubmit(form.value)">
</form>

component

you can set value like that

this.form.patchValue({firstName:this.userDetails.first_name});

make sure you create instance of form Group into component

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 crash
Solution 2
Solution 3 Shailesh Ladumor