Page 35 - Revista_60.pub
P. 35

A PROGRAMAR







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

             get ano() { return this.edicaoForm.get('ano'); }             É obrigatório o Mês.
           get mes() { return this.edicaoForm.get('mes'); }            </span>
         }
                                                                     </div>
              Este componente será utilizado para adicionar e editar         <span class="text-danger" *ngIf="mes.invalid
         dados de edições. Uma vez que estamos a usar um form, con-                               && formDir.submitted">
         juntamente com validação cliente-side, de forma a permitir adi-          É necessário o mês
                                                                     </span>
         cionar  e  editar  edições,  importamos  algumas  classes  do       </div>
         @angular/froms e colocamos o código para criar o formulário,       <div class="form-group">
         dentro do construtor de forma a que o formulário seja apresen-        <button type="submit" class="btn
         tado quando a pagina é carregada. A diferenciação entre adi-                         btn-default">Gravar</button>
         ção  e  edição,  é  feita  através  de  routing,  usando  parâmetros         <button class="btn" (click)=
         diferentes, um para adicionar edições outro para editar os re-                         "cancel()">Cancelar</button>
                                                                   </div>
         gistos de uma edição, mas veremos isso mais adiante. Agora     </form>
         vamos  ao  HTML  deste  controlador,  tal  como  fizemos  para  o   </body>
         controlador   anterior,   mas   com   o   nome   addEdi-  </html>
         cao.component.html e colocamos o código seguinte:

         <!DOCTYPE html>                                        Criar a entrada no menu
         <html>                                                       Chegados  a  este  ponto,  falta-nos  criar  uma  entrada
         <head>
             <meta charset="utf-8" />                           no menu, definir a route para essa entrada e podemos final-
             <title></title>                                    mente  executar  a  aplicação.    Para  criarmos  essa  entrada
         </head>                                                começamos por editar o ficheiro /app/app.shared.module.ts e
         <body>                                                 colocamos o seguinte código no seu interior:
           <h1>{{title}}</h1>
           <h3>Edição</h3>
           <hr />                                               import { NgModule } from '@angular/core';
                                                                import { EmployeeService } from './services/
           <form [formGroup]="edicaoForm" (ngSubmit)=                                         ediservice.service'
                      "save()" #formDir="ngForm" novalidate>    import { CommonModule } from '@angular/common';
                                                                import { FormsModule, ReactiveFormsModule } from
                                                                                                '@angular/forms';
             <div class="form-group row">                       import { HttpModule } from '@angular/http';
               <label class=" control-label col-md-             import { RouterModule } from '@angular/router';
                                            12">Tema</label>
               <div class="col-md-4">                           import { AppComponent } from './components/app/
                 <input class="form-control" type="text"                                          app.component';
                                     formControlName="tema">    import { NavMenuComponent } from './components/
               </div>                                                                 navmenu/navmenu.component';
               <span class="text-danger" *ngIf="tema.invalid    import { HomeComponent } from './components/home/
                                      && formDir.submitted">                                     home.component';
                                                                import { FetchEmployeeComponent } from './
                 É obrigatório o tema de capa.                                          components/fetchedicao/
               </span>                                                                   fetchedicao.component'
             </div>                                             import { createemployee } from './components/
             <div class="form-group row">                                          addedicao/AddEdicao.component'
               <label class="control-label col-md-12"
                                          for="Ano"></label>    @NgModule({
               <div class="col-md-4">                             declarations: [
                 <select class="form-control"                       AppComponent,
                      data-val="true" formControlName="Ano">        NavMenuComponent,
                                                                    HomeComponent,
                   <option value="">--Seleccione o Ano--            FetchEdicaoComponent,
                                                   </option>        createedicao,
                   <option *ngFor="let ano of anoList"            ],
                           value={{ano.anoName}}>                 imports: [
                     {{ano.anoName}}                                CommonModule,
                   </option>                                        HttpModule,
                 </select>                                          FormsModule,
               </div>                                               ReactiveFormsModule,
               <div class="form-group row">                         RouterModule.forRoot([
                                                                      { path: '', redirectTo: 'home', pathMatch:
                 <label class="control-label col-md-12"                                                 'full' },
                                       for="Mes">Mes</label>          { path: 'home', component: HomeComponent },
                 <div class="col-md-4">                               { path: 'fetch-edicao', component:
                   <input class="form-control" type="text"                                FetchEdicaoComponent },
                                      formControlName="mes">          { path: 'register-edicao', component:
                 </div>                                                                           createedicao },
                 <span class="text-danger"                            { path: 'edicao/edit/:id', component:
                   *ngIf="ano.invalid && formDir.submitted">                                      createedicao },



                                                           35
   30   31   32   33   34   35   36   37   38   39   40