Tampa
Tampa

Reputation: 78294

angular2 and formControlName value in template

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

Upvotes: 29

Views: 52187

Answers (3)

Vishal Kumar
Vishal Kumar

Reputation: 4627

If you are looking to print the current field values of a form in your template for testing purpose.

Use

<p>{{myForm.value|json}}</p>

enter image description here

Upvotes: 4

Emmanuel Osimosu
Emmanuel Osimosu

Reputation: 6004

Declare a template variable:

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

Upvotes: 19

Michael Kang
Michael Kang

Reputation: 52847

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>

Upvotes: 55

Related Questions