Angular-Loiane-Training

Este repositorio contem exemplos documentados e descricoes dos conteudos estudados ao longo do curso de Angular da Loiane

View project on GitHub

Checkbox Toggle

O checkbox toggle assume os valores “true” quando esta marcado e “false” quando desabilitado, para relizar a validacao e possivel utilizar o Validator pattern do angular, pois, neste caso temos certeza que apenas este dois valores serao retornados (se nenhum valor for inicializado como padrao o valor incial sera “null”).

Neste exemplo iteremos criar um campo de aceite as termos de uso.

Adicionando o FormControl ao objeto passado como argumento para o metodo group do FormBuilder.


// ...imports

@Component({
  selector: 'app-data-driven-form',
  templateUrl: './data-driven-form.component.html',
  styleUrls: ['./data-driven-form.component.css']
})
export class DataDrivenFormComponent implements OnInit {

  // ...atributos

  constructor(private formBuilder: FormBuilder, private http: HttpClient, private dadosService: DadosService, private cepService: CepService) { }

  ngOnInit(): void {
    this.formulario = this.formBuilder.group({
      nome: [null, Validators.required],
      email: [null, [Validators.required, Validators.email]],
      endereco: this.formBuilder.group({
        cep: [null, Validators.required],
        numero: [null, Validators.required],
        rua: [null, Validators.required],
        complemento: null,
        bairro: [null, Validators.required],
        cidade: [null, Validators.required],
        estado: [null, Validators.required]
      }),
      tecnologias: null,
      newsLetter: null,
      // novo FormControl adicionado
      termos: [null, Validators.pattern('true')],
    })
    this.dadosService.getEstadosBr().subscribe(
      estados => this.estados = estados
    )
  }

  public aplicaCssErro(nomeCampo: string) {
    return {
      'has-error': this.verificaValidAndTouched(nomeCampo),
      'has-feedback': this.verificaValidAndTouched(nomeCampo)
    }
  }

  // ...demais metodos
}

No template HTML o checkbox e adcionado conforma a estrutura descrita na documentacao horizontal forms do Bootstrap 3 e o css de validacao aplicado conforme a secao validation status

<form class="form-horizontal" [formGroup]="formulario" (ngSubmit)="onSubmit()">
  <div class="form-group">
    
    <!-- demais campos do formulario -->

    <div class="col-md-3" [ngClass]="aplicaCssErro('termos')">
    <label for="newsLetter" class="control-label">Termos</label>
      <div class="checkbox">
        <label>
          <input type="checkbox" id="blankCheckbox" formControlName="termos"> Aceito os termos
        </label>
      </div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>
<app-form-debug [formulario]="formulario"></app-form-debug>


checkbox toggle.