Form group does not update angular template

0

I am using formgroup and need to fill in the fields of my formgroup by receiving data from an array.

I tried something like:

My Form Group:

produtoForm = this.fb.group({
    nomeproduto: [''],
    valorcompra: [null],
    valorvenda: [null],
    skuprincipal: [''],
    indicepersonalizado: [null],
    ean: [''],
    gtin: [''],
    marca: [''],
    estoque: [null],
    prazoproducao: [''],
    altura: [null],
    largura: [null],
    comprimento: [null],
    peso: [null],
    linkfoto1: [''],
    linkfoto2: [''],
    linkfoto3: [''],
    linkfoto4: [''],
    linkfoto5: [''],
    linkfoto6: [''],
    video: [''],
  });

I have a product variable that contains information for a product that I need to play in this formgroup. I tried something like:

this.produtoForm.controls = produto;

I've also tried:

this.produtoForm.controls.value = produto;

If I give a console.log (this.produtoForm.controls.value) my data is there, but my template is not updated with the data.

Example of my template:

<form [formGroup]="produtoForm" novalidate #f="ngForm">
  <div class="row">
    <div class="col-12 col-md-4">
      <div class="card-body">
        <div class="md-form form-lg input-modal">
          <input formControlName="nomeproduto" required type="text" name="nomeproduto" id="nomeproduto" class="form-control">
          <label id="labelnome" for="nomeproduto">Nome do Produto</label>
        </div>
      </div>
    </div>
  </div>

If I use with [(ngModel)] my template works as expected, but I get a warning that it's deprecating to use the two together. How can I issue these changes to my template?

@Edit:

I noticed that I update the template if I use it this way:

(<FormControl>this.produtoForm.controls['nomeproduto'])
.setValue(this.produto.nome);

Is there any way to pass all values from my product variable to existing controllers?

    
asked by anonymous 21.09.2018 / 15:16

2 answers

0

patchValue

multiple values

this.produtoForm.patchValue({nomeproduto: 'Test'}); 

setValue

Unique value

this.produtoForm.nomeproduto.setValue('Test');
    
05.10.2018 / 19:35
0

There is a function that assigns values of an object in the form as long as the object has the same attributes as the form: this.produtoForm.patchValue(produto);

    
05.10.2018 / 19:31