O que é Reactive Forms – Angular

Reactive forms é uma abordagem orientada a modelos para construção de formulários no Angular. Desta forma o modelo é criado na classe do componente é mostrado no HTML com um markup especial para ele.

Ele consiste em alguns blocos:

  • FormGroup;
  • FormArray;
  • FormControl.

FormControl

É um campo único de entrada em um formulário Angular. Como assim, vamos ao exemplo:

Nós podemos usar o FormControl para pegar e setar valores no campo, achar status e adicionar regras de validações. Usando a diretiva de ngModel para isso.

Para criar um FormControl, usamos o seguinte “new FormControl()”.

Quando temos um novo objeto, podemos acessar os seus valores com um simples ponto, assim:

Podemos também checar os status de validação da seguinte forma:

Mas o que faz valid, dirty e touched.

  • Valid: O valor que vem do campo passa por todas as validações e é marcado como Valid;
  • Dirty: Quando o usuário muda o valor, ele é marcado como Dirty;
  • Touched: Quando o usuário interage com o campo ou clicar fora dele.

Nós podemos usar o construtor para passar um valor inicial e validado.

No exemplo acima o valor inicial é ‘Dener Troquatte’ e tem que ter no mínimo 3 caracteres.

FormGroup

Pensa como se FormGroup fosse um grupo de FormsControls e cada FormControl é uma propriedade.

Em sua maioria os formulários têm mais de um campo, então temos que deixar uma maneira simples de gerenciar tudo isso.

Pensa no seguinte exemplo:

Cada campo é um FormControl separado, imagina se precisássemos validar cada campo individualmente, com o FormGroup resolvemos esse problema, ele envolve cada FormControl e podemos trackear individualmente cada child.

Podemos especificar individualmente cada FormControl no construtor do FormGroup.

Também podemos passar valores iniciais e validações para cada FormControl.

Se uma parte do formulário for inválida, o grupo todo é falho na validação.

Podemos usar a propriedade de value para acessar e controlar os valores e assim ele retorna um objeto com todos os valores do grupo.

Também podemos acessar cada valor individualmente com o “.get()”.

E também podemos usar as validações como o “.valid”, “.dirty”“.touched” e “.error”.

FormArray

É bem parecido com o FormGroup.

  • O FormGroup contém o controle como uma única propriedade;
  • O FormArray contém um array de controles como uma propriedade.

É útil para listas, como data de aniversário e endereços como estados e países. E podemos criá-los desta forma.

Podemos pegar a referência do array com o “get()”.

E também como o FormControl e FormGroup, podemos checar os status do array, com o “valid”, “dirty”, “touched” e “error”.

Reactive FormO que é Reactive forms

Vamos ver um exemplo prático de como usar.

Não podemos esquecer de importar o “ReactiveFormsModule” do “@angular/forms” e importar no array de App Module.

Vamos criar o nosso form model dentro da nossa classe de componentes.

No exemplo acima, importamos o FormGroup e FormControl e criamos um grupo com dois controles.

Agora vamos para view e criar uma estrutura simples que receberá nosso form.

Vamos pontuar algumas coisas sobre o exemplo acima:

  • Associamos o nosso modelo usando o “formGroup” com o nome e valor do grupo;
  • Dizemos ao Angular que ao enviar o form com ngSubmit, neste caso chamamos o método “onSubmit()” (que ainda não existe);
  • Nós linkamos os campos correspondentes com o formControlName .

Agora precisamos criar o “onSubmit()”.

Para manter tudo simples, ele apenas mostra um console.log.

ValidadoresO que é Reactive forms

Como já vimos no FormControl, é fácil adicionar os validadores.

Vamos importar o Validators module no “@angular/forms” e adicionamos o validator que queremos como segundo argumento.

No exemplo acima, os campos requerem no mínimo 3 caracteres para ser aceito.

Neste exemplo o botão de enviar é desabilitado até que os requisitos sejam concluídos.

ResetO que é Reactive forms

Nós podemos usar o método “reset()” para resetar todos os controles do grupo.

Ao clicar no botão resete o método “onReset()” é chamado.

Simplesmente o método “onReset()” invoca o “reset()” do FormGroup e tudo é limpo como esperado. Então agora você sabe o que é Reactive forms Angular.

Tenha uma carreira
Front-end de Sucesso!

Ebook - JORNADA FRONT-END

Fruto de mais de 7 anos estudando e trabalhando com Front-end, a "Jornada Front-end - O Guia Definitivo" é um manual completo para todos que querem subir em suas carreiras do zero ou subir do seu nível atual.

Ebook enviado com sucesso! Verifique sua caixa de e-mail.

Share This