Page 33 - Revista_60.pub
P. 33

A PROGRAMAR







                                    ASP.NET CORE, ANGULAR 5  - CRUD COM ENTITY FRAMEWORK

                                                                à pasta ClientApp/src/app/AddEdicao e clicamos com o bo-
           getEdicaoById(id: number) {                          tão direito nessa pasta e depois em novo. Do lado esquerdo
             return this._http.get(this.myAppUrl + "api/
                                      Edicao/Details/" + id)    escolhemos  Web->scripts  e  do  lado  direito  TypeScript  file.
               .map((response: Response) => response.json())    Damos o nome de addEdicao.component.ts e por fim clica-
               .catch(this.errorHandler)                        mos em adicionar.
           }
                                                                      Findo  este  procedimento  vamos  criar  o  HTML  que
           saveEdicao(edicao) {
             return this._http.post(this.myAppUrl + 'api/       será apresentado. Para tal, novamente clicamos com o botão
                                     Edicao/Create', edicao)    direito do rato na pasta que criamos anteriormente, seleccio-
               .map((response: Response) => response.json())    namos “adicionar”, do lado esquerdo escolhemos ASP.NET
               .catch(this.errorHandler)                        Core e do lado direito HTML Page, damos o nome addedi-
           }
                                                                cao.component.html  e  clicamos  ok.  Assim  ficamos  com  o
           updateEdicao(edicao) {                               que  precisamos  para  podermos  escrever  o  código  deste
             return this._http.put(this.myAppUrl + 'api/        componente.  Começamos  pelo  fetchedicao.component.ts,
                                       Edicao/Edit', edicao)
               .map((response: Response) => response.json())    abrimos e colocamos o seguinte código:
               .catch(this.errorHandler);
           }                                                    //importa os módulos do Angular
                                                                import { Component, Inject } from '@angular/
           deleteEdicao(id) {                                   core';
             return this._http.delete(this.myAppUrl + "api/     import { Http, Headers } from '@angular/http';
                                       Edicao/Delete/" + id)    import { Router, ActivatedRoute } from '@angular/
               .map((response: Response) => response.json())    router';
               .catch(this.errorHandler);                       //importa o edicoesService
           }                                                    import { EdicoesService } from '../../services/
                                                                                              ediservice.service'
           errorHandler(error: Response) {                      //decorador @Component, que define o url do tem-
             console.log(error);                                plate, para o componente
             return Observable.throw(error);                    @Component({
           }                                                      templateUrl: './fetchedicao.component.html'
         }                                                      })

         É possível que neste momento apareça um warning (aviso) de   export class FetchEdicaoComponent {
         conversão de tipo implícito. Para contornar essa situação alte-    public ediList: EdicaoData[]; //cria um array
                                                                do tipo EdicaoData, onde EdicaoData é um interfa-
         ramos a flag noImplicitAny para false, no tsconfig.json.   ce com as mesmas propriedades da classe do Model
                                                                TblEdicoes
         {
           "compileOnSave": false,                                constructor(public http: Http, private _router:
           "compilerOptions": {                                  Router, private _edicaoService: EdicaoService) {
             "outDir": "./dist/out-tsc",                            this.getEmployees();//chamamos este método
             "sourceMap": true,                                 aqui para permitir mostrar resultados no carrega-
             "declaration": false,                              mento da pagina
             "moduleResolution": "node",                          }
             "emitDecoratorMetadata": true,
             "experimentalDecorators": true,                    //chamamos o método getEdicao do nosso servisse
             "target": "es5",                                   EdicoesService que retornará um array do tipo
             "typeRoots": [                                     Edicao que será armazenado na variável ediList
               "node_modules/@types"                              getEdicao() {
             ],                                                     this._edicaoService.getEdicao().subscribe(
             "lib": [                                                 data => this.ediList = data
               "es2017",                                            )
               "dom"                                              }
             ],
             "noImplicitAny": false                               delete(edicaoID) {
           }                                                        var ans = confirm("Deseja apagar a edicao com
         }                                                                                   o Id: " + edicaoID);
                                                                    if (ans) {
                                                                      this._edicaoService.deleteEdicao
                                                                                 (edicaoID).subscribe((data) => {
                                                                        this.getEdicao();
         Criando os componentes Angular                               }, error => console.error(error))
                                                                    }
              Nesta  etapa  criamos  os  componentes  para  a  nossa     }
         aplicação  exemplo.  Como  se  trata  de  um  exemplo  bastante   }
         simples, em que apenas temos um registo de edições e anos
         de cada edição, apenas iremos precisar de adicionar dois com-  interface EdicaoData {
                                                                  edicaoId: number;
         ponentes,  um  para  obter  uma  edição  e  outro  para  adicionar     TemaCapa: string;
         uma edição. Começamos por criar uma pasta chamada addE-    ano: string;
         dicao, na pasta /ClientApp/src/app/ . Logo de seguida criamos     mes: string;
                                                                }
         um componente que irá adicionar uma edição. Para isso vamos




                                                           33
   28   29   30   31   32   33   34   35   36   37   38