angular2 and formControlName value in template

Tampa picture Tampa · Mar 11, 2017 · Viewed 30.4k times · Source

Oh angular2...why so hard?

<input type="text" formControlName="exposure" type="hidden">
<label>{{exposure}}</label>

If I use the formControlName in the input the value is correct.

How do I get the value of exposure in template? Its blank in the label

Answer

pixelbits picture pixelbits · Mar 11, 2017

The formControlName directive is designed to be used with a parent FormGroupDirective (selector: [formGroup]).

It accepts the string name of the FormControl instance you want to link, and will look for a FormControl registered with that name in the closest FormGroup or FormArray above it.

Use form.get('exposure').value to get the control value.

Example:

<form [formGroup]="form">
    <input type="text" formControlName="exposure" type="hidden">
    <label>{{ form.get('exposure').value }}</label>
</form>

Alternatively

In your component class, define a getter property representing your form control:

export class MyComponent {
  form = new FormGroup({
    exposure: new FormControl('')
  });

  get exposure(): FormControl { return this.form.get('exposure'); }

Then, in your component template, you can reference exposure:

<input type="text" formControlName="exposure" type="hidden">
<label>{{exposure.value}}</label>