jose-m
12/26/2017 - 7:01 PM

ON SUBMIT

ON SUBMIT, EVENTO PARA SUBMIT DE UN FORMULARIO

Instalacion de FLASH-MESSAGE:
npm install --save angular2-flash-messages

Despues se importa en app.module.ts:
import { FlashMessagesModule } from 'angular2-flash-messages'; y se agrega en 
providers:
FlashMessagesModule

para usarlo en los componentes se tiene que importar:
import { FlashMessagesService } from 'angular2-flash-messages';

En el componente HTML:
<flash-messages></flash-messages>, en la parte donde se desea sea mostrada la alerta

En el componente:
import { Component, OnInit } from '@angular/core';
//IMPORTACION DEL MODELO CLIENTE
import { Client } from '../../models/Client';
//LIBRERIA PARA LAS ALERTAS
import { FlashMessagesService } from 'angular2-flash-messages';
//PARA REDIRECCIONAR EN CASO DE ERROR O EXITO
import { Router } from '@angular/router';
//SERVICE PARA AGREGAR EL NUEVO CLIENTE
import { ClientService } from '../../services/client.service'; 

@Component({
  selector: 'app-add-client',
  templateUrl: './add-client.component.html',
  styleUrls: ['./add-client.component.css']
})
export class AddClientComponent implements OnInit {
  //INICIALIZACION DEL MODELO CLIENT
  client: Client = {
    firstName:'',
    lastName:'',
    email: '',
    phone: '',
    balance:0
  }

  disableBalanceOnAdd: boolean = false;
  //INYECCION DE LAS DEPENCIAS IMPORTADAS EN EL CONSTRUCTOR
  constructor(
    private flashMessagesService: FlashMessagesService,
    private router: Router,
    private clientService: ClientService
  ) { }

  ngOnInit() {
  }

  //OBJECTO "f" DEL FORMULARIO
  //value, valid => VALOR Y BOOLEAN SI ES VALIDO
  //value: Client, valid: boolean => VALUE EL CLIENT, VALID FLAG DE ERROR
  onSubmit({value, valid}: {value: Client, valid: boolean}){
    //SI ESTA DESHABILITADA LA OPCION DE "BALANCE"
    if(this.disableBalanceOnAdd){
      value.balance = 0;
    }
    //SI NO PASA LAS VALIDACIONES EL FORMULARIO
    if(!valid){
      //ALERTA DE ERROR
      this.flashMessagesService.show('Please fill in all fields', {
        cssClass:'alert-danger', timeout: 4000
      });
      //REDIRECCIONAMIENTO A LA MISMA RUTA
      this.router.navigate(['add-client']);
    } else {
      //USAMOS EL CLIENTSERVICE PARA AGREGAR AL NUEVO CLIENTE
      this.clientService.newClient(value);
      //ALERTA DE EXITO
      this.flashMessagesService.show('New client added', {
        cssClass:'alert-success', timeout: 4000
      });
      //REDIRECCIONAMIENTO A LA RAIZ (DASHBOARD)
      this.router.navigate(['/']);
    }
  }

}