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

Criando Servico de Estados Brasileiros

Para realizar a consulta dos estados brasileiros neste exemplo os dados serao alocados diretamente em um arquivo .json no projeto no diretorio assets, pois, ao fazer o build de producao os arquivos no interior deste diretorio sao compiados para o build final.

Fonte do .json: https://github.com/felipefdl/cidades-estados-brasil-json

alem dos dados uma classe model sera utilizada para tipar o objeto que contem os dados relativos ao estado no json

export interface EstadoBr {
  "id": string,
	"sigla": string,
	"nome": string
}

o ideal e criar um servico responsavel pelos metodos relativos aos dados do json, neste exemplo itemos criar o DropdownService, e possivel obter os valores do ariquvo .json utilizando o objeto http injetado no service, passando o caminho do arquivo como argumento. para obter os dados iremos implementar o metodo getEstadosBr

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { EstadoBr } from './../../../assets/dados/estados/estados.model';

@Injectable({
  providedIn: 'root'
})
export class DadosService {

  constructor(private http: HttpClient) { }

  public getEstadosBr() {
    return this.http.get<EstadoBr[]>('assets/dados/estados/estados.json')
  }
}

no compoenent serao injetado o dadosService para obter os estados.

import { EstadoBr } from './../../../../assets/dados/estados/estados.model';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { map } from 'rxjs/operators';
import { DadosService } from '../../../shared/dropdown/dados.service';

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

  public formulario: FormGroup
  public estados: EstadoBr[];

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

  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]
      })
    })
    this.dadosService.getEstadosBr().subscribe(
      estados => this.estados = estados
    )
  }

  // ...demais metodos


objeto contendo os estados retornados pelo servico.