Wednesday 21 November 2018

CURD operation & example of pipe in angularjs6 & webapi2




Web api code :

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApplication5.Models;

namespace WebApplication5.Controllers
{
    [RoutePrefix("api/Authorservices")]
    public class AuthorservicesController : ApiController
    {
        [HttpGet]
        [Route("Countries")]
        public HttpResponseMessage Countries()
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    return Request.CreateResponse(HttpStatusCode.OK, obj.COUNTRies.ToList());
                }
            }
            catch(Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpGet]
        [Route("Hobbies")]
        public HttpResponseMessage Hobbies()
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    return Request.CreateResponse(HttpStatusCode.OK, obj.HOBBies.ToList());
                }
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpGet]
        [Route("Authors")]
        public HttpResponseMessage Authors()
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    return Request.CreateResponse(HttpStatusCode.OK, obj.AUTHORs.ToList());
                }
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpGet]
        [Route("Author/{AID:int}",Name ="Get1")]
        public HttpResponseMessage Author(int AID)
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    AUTHORVM vm = obj.AUTHORs.Where(e => e.AID == AID).Select(p => new AUTHORVM { AID = p.AID, NAME = p.NAME, ADDRESS = p.ADDRESS, PASSWORD = p.PASSWORD, GENDER = p.GENDER, EMAIL = p.EMAIL, SALARY = p.SALARY, DOB = p.DOB, CID = p.CID, SID = p.SID }).SingleOrDefault(m => m.AID == AID);
                    vm.HLIST = obj.HMAPs.Where(e => e.WID == AID).Select(p => p.HID.Value).ToList();
                    return Request.CreateResponse(HttpStatusCode.OK, vm);
                }
            }

            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpGet]
        [Route("States/{CID:int}")]
        public HttpResponseMessage States(int CID)
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                 
                    return Request.CreateResponse(HttpStatusCode.OK, obj.STATEs.Where(m=>m.CID==CID).ToList());
                }
            }

            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpPost]
        [Route("Save")]
        public HttpResponseMessage Save(AUTHORVM vm)
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    AUTHOR auth = new AUTHOR();
                    auth.AID = vm.AID;
                    auth.NAME = vm.NAME;
                    auth.ADDRESS = vm.ADDRESS;
                    auth.PASSWORD = vm.PASSWORD;
                    auth.GENDER = vm.GENDER;
                    auth.EMAIL = vm.EMAIL;
                    auth.SALARY = vm.SALARY;
                    auth.DOB = vm.DOB;
                    auth.CID = vm.CID;
                    auth.SID = vm.SID;
                    obj.Entry(auth).State = EntityState.Added;
                    obj.SaveChanges();
                    obj.HMAPs.AddRange(vm.HLIST.Select(p => new HMAP { WID=vm.AID, HID=p }).ToList());
                    obj.SaveChanges();
                    var req= Request.CreateResponse(HttpStatusCode.Created, "Data Saved.");
                    req.Headers.Location = new Uri(Url.Link("Get1", new { AID = vm.AID }));
                    return req;
                }
            }

            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }

        [HttpPut]
        [Route("Update/{AID:int}")]
        public HttpResponseMessage Update([FromUri]int AID,[FromBody]AUTHORVM vm)
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    AUTHOR auth = obj.AUTHORs.Find(AID);
                    auth.NAME = vm.NAME;
                    auth.ADDRESS = vm.ADDRESS;
                    auth.PASSWORD = vm.PASSWORD;
                    auth.GENDER = vm.GENDER;
                    auth.EMAIL = vm.EMAIL;
                    auth.SALARY = vm.SALARY;
                    auth.DOB = vm.DOB;
                    auth.CID = vm.CID;
                    auth.SID = vm.SID;
                    obj.Entry(auth).State = EntityState.Modified;
                    obj.SaveChanges();
                    obj.HMAPs.RemoveRange(obj.HMAPs.Where(e => e.WID == AID).ToList());
                    obj.SaveChanges();
                    obj.HMAPs.AddRange(vm.HLIST.Select(p => new HMAP { WID = vm.AID, HID = p }).ToList());
                    obj.SaveChanges();
                    return Request.CreateResponse(HttpStatusCode.OK, "Data Updated.");
                   
                }
            }

            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
        [HttpDelete]
        [Route("Delete/{AID:int}")]
        public HttpResponseMessage Delete([FromUri]int AID)
        {
            try
            {
                using (Database1Entities obj = new Models.Database1Entities())
                {
                    AUTHOR auth = obj.AUTHORs.Find(AID);
                   obj.Entry(auth).State = EntityState.Deleted;
                    obj.SaveChanges();
                    obj.HMAPs.RemoveRange(obj.HMAPs.Where(e => e.WID == AID).ToList());
                    obj.SaveChanges();
                    return Request.CreateResponse(HttpStatusCode.OK, "Data Deleted.");

                }
            }

            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }

    }
}


Angularjs Code: 

<form class="form-horizontal" #frmauthor="ngForm">
           
  <div class="form-group " [class.has-error]="AID.invalid && AID.touched" [class.has-success]="AID.valid" >
      <label class="control-label col-lg-4">AID</label>
      <div class="col-lg-4">
          <input type="text" class="form-control" name="AID" required [(ngModel)]="AUTHOR.AID" #AID="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="AID.invalid && AID.touched">
          AID should not be blank.
      </span>
  </div>
  <div class="form-group " [class.has-error]="NAME.invalid && NAME.touched" [class.has-success]="NAME.valid">
      <label class="control-label col-lg-4">NAME</label>
      <div class="col-lg-4">
          <input type="text" class="form-control" name="NAME" required [(ngModel)]="AUTHOR.NAME" #NAME="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="NAME.invalid && NAME.touched">
          Name should not be blank.
      </span>
  </div>
  <div class="form-group " [class.has-error]="ADDRESS.invalid && ADDRESS.touched" [class.has-success]="ADDRESS.valid">
    <label class="control-label col-lg-4">ADDRESS</label>
    <div class="col-lg-4">
        <textarea class="form-control" name="ADDRESS" required [(ngModel)]="AUTHOR.ADDRESS" #ADDRESS="ngModel"></textarea>
    </div>
    <span class="help-block has-error" *ngIf="ADDRESS.invalid && ADDRESS.touched">
        Address should not be blank.
    </span>
</div>
  <div class="form-group " [class.has-error]="PASSWORD.invalid && PASSWORD.touched" [class.has-success]="PASSWORD.valid">
      <label class="control-label col-lg-4">PASSWORD</label>
      <div class="col-lg-4">
          <input type="password" minlength="6" maxlength="8" class="form-control" name="PASSWORD" required [(ngModel)]="AUTHOR.PASSWORD" #PASSWORD="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="PASSWORD.errors?.required && PASSWORD.touched">
          Password should not be blank.
      </span>
      <span class="help-block has-error" *ngIf="PASSWORD.errors?.minlength">
          Password min length is 6.
      </span>
      <span class="help-block has-error" *ngIf="PASSWORD.errors?.maxlength">
          Password max length is 8.
      </span>

  </div>
  <div class="form-group " [class.has-error]="GENDER.invalid && GENDER.touched" [class.has-success]="GENDER.valid">
      <label class="control-label col-lg-4">GENDER</label>
      <div class="col-lg-4">
          <input type="radio" value="Male" name="GENDER" required [(ngModel)]="AUTHOR.GENDER" #GENDER="ngModel" />Male
          <input type="radio" value="Female" name="GENDER" required [(ngModel)]="AUTHOR.GENDER" #GENDER="ngModel" />Female
      </div>
      <span class="help-block has-error" *ngIf="GENDER.invalid && GENDER.touched">
          Please select a gender.
      </span>
  </div>
  <div class="form-group " [class.has-error]="EMAIL.invalid && EMAIL.touched" [class.has-success]="EMAIL.valid">
      <label class="control-label col-lg-4">EMAIL</label>
      <div class="col-lg-4">
          <input type="text" class="form-control" pattern="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" name="EMAIL" required [(ngModel)]="AUTHOR.EMAIL" #EMAIL="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="EMAIL.invalid && EMAIL.touched && EMAIL.errors?.required">
          Email should not be blank.
      </span>
      <span class="help-block has-error" *ngIf="EMAIL.touched && EMAIL.errors?.pattern">
          Invalid email id.
      </span>
  </div>
  <div class="form-group " [class.has-error]="SALARY.invalid && SALARY.touched" [class.has-success]="SALARY.valid">
      <label class="control-label col-lg-4">SALARY</label>
      <div class="col-lg-4">
          <input type="text" class="form-control" name="SALARY" required [(ngModel)]="AUTHOR.SALARY" #SALARY="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="SALARY.invalid && SALARY.touched">
          Salary should not be blank.
      </span>
  </div>
  <div class="form-group " [class.has-error]="DOB.invalid && DOB.touched" [class.has-success]="DOB.valid">
      <label class="control-label col-lg-4">DOB</label>
      <div class="col-lg-4">
          <input type="text" class="form-control" name="DOB" required [(ngModel)]="AUTHOR.DOB" #DOB="ngModel" />
      </div>
      <span class="help-block has-error" *ngIf="DOB.invalid && DOB.touched">
          Dob should not be blank.
      </span>
  </div>
  <div class="form-group " [class.has-error]="CID.invalid && CID.touched" [class.has-success]="CID.valid">
      <label class="control-label col-lg-4">COUNTRY</label>
      <div class="col-lg-4">
          <select class="form-control" name="CID" (change)="fillddl()" required [(ngModel)]="AUTHOR.CID" #CID="ngModel">
              <option [ngValue]="null">Select</option>
              <option *ngFor="let c of listc" [value]="c.CID" >{{c.CNAME}}</option>
          </select>
      </div>
      <span class="help-block has-error" *ngIf="CID.invalid && CID.touched">
          Please select a country.
      </span>
  </div>
  <div class="form-group " [class.has-error]="SID.invalid && SID.touched" [class.has-success]="SID.valid">
      <label class="control-label col-lg-4">STATE</label>
      <div class="col-lg-4">
          <select class="form-control" name="SID" required [(ngModel)]="AUTHOR.SID" #SID="ngModel">
              <option [ngValue]="null">Select</option>
              <option *ngFor="let c of lists" [value]="c.SID">{{c.SNAME}}</option>
          </select>
      </div>
      <span class="help-block has-error" *ngIf="SID.invalid && SID.touched">
          Please select a country.
      </span>
  </div>
  <div class="form-group " [class.has-error]="HLIST.invalid && HLIST.touched" [class.has-success]="HLIST.valid">
      <label class="control-label col-lg-4">HOBBY</label>
      <div class="col-lg-4">
          <select class="form-control" multiple name="HLIST" required [(ngModel)]="AUTHOR.HLIST" #HLIST="ngModel">
          
              <option *ngFor="let c of listh" [value]="c.HID">{{c.HNAME}}</option>
          </select>
      </div>
      <span class="help-block has-error" *ngIf="HLIST.invalid && HLIST.touched">
          Please select a hobby.
      </span>
  </div>
  <div class="form-group">
      <label class="control-label col-lg-4"></label>
      <div class="col-lg-4">
        <input type="button" value="Save" class="btn btn-primary" style="width:80px" (click)="save(frmauthor.valid)" />
          <input type="button" value="Update" class="btn btn-primary" style="width:80px" (click)="update(frmauthor.valid)" />
          <input type="button" value="Reset" class="btn btn-primary" style="width:80px" (click)="reset(frmauthor)" />
      </div>
  </div>
  <div class="form-group">
    <label class="control-label col-lg-4"></label>
    <div class="col-lg-8">
       <table class="table table-bordered table-condensed table-hover table-responsive table-striped">
           <thead class="bg bg-primary">
               <tr>
                   <th>Sl No.</th>
                   <th>NAME</th>
                   <th>ADDRESS</th>
                   <th>GENDER</th>
                   <th>SALARY</th>
                   <th>DOB</th>
                   <th>ACTION</th>
               </tr>
           </thead>
           <tbody>
               <tr *ngFor="let c of list;let i=index">
                   <td>{{i+1|percent}}</td>
                   <td>{{c.NAME|CustomPipe:c.GENDER}}</td>
                   <td>{{c.ADDRESS|lowercase}}</td>
                   <td>{{c.GENDER|uppercase}}</td>
                   <td>{{c.SALARY|number:'.3'}}</td>
                   <td>{{c.DOB|date:'dd-MMM-yyyy'}}</td>
                   <td>
                       <a (click)="edit(c.AID)">Edit</a> | <a (click)="del(c.AID)">Delete</a>
                   </td>
               </tr>
           </tbody>
       </table>
    </div>
</div>
</form>

Angular Model: 

export interface Iauthor {
    AID: number;
    NAME: string;
    ADDRESS: string;
    PASSWORD: string;
    GENDER: string;
    EMAIL: string;
    SALARY: number;
    DOB: Date;
    CID: number;
    SID: number;
    HLIST: number[];
}
export interface Icountry {
    CID: number;
    CNAME: string;
}

export interface Istate {
    SID: number;
    SNAME: string;
    CID: number;
}

export interface Ihobby {
    HID: number;
    HNAME: string;
}

Angularjs Services :

import { Injectable } from '@angular/core';
import { NgForm } from '@angular/forms';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Iauthor, Icountry, Istate, Ihobby } from '../author/author.model';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

@Injectable()
export class AuthorServices {
    baseUrl = 'http://localhost:2813/api/Authorservices';
    constructor(private _http: HttpClient) {
    }
    Getc(): Promise<Icountry[]> {
        return this._http.get<Icountry[]>(`${this.baseUrl}/${'Countries'}`)
            .toPromise();
    }
    Geth(): Promise<Ihobby[]> {
        return this._http.get<Ihobby[]>(`${this.baseUrl}/${'Hobbies'}`)
            .toPromise();
    }
    Geta(): Promise<Iauthor[]> {
        return this._http.get<Iauthor[]>(`${this.baseUrl}/${'Authors'}`)
            .toPromise();
    }
    Get(AID: number): Promise<Iauthor> {
        return this._http.get<Iauthor>(`${this.baseUrl}/${'Author'}/${AID}`)
            .toPromise();
    }
    Gets(CID: number): Promise<Istate[]> {
        return this._http.get<Istate[]>(`${this.baseUrl}/${'States'}/${CID}`)
            .toPromise();
    }
    Save(author: Iauthor): Promise<string> {
        return this._http.post<string>(`${this.baseUrl}/${'Save'}`
            , JSON.stringify(author)
            , {
                headers: new HttpHeaders({ 'Content-Type': 'application/json' })
            })
            .toPromise();
    }
    Update(author: Iauthor): Promise<string> {
        return this._http.put<string>(`${this.baseUrl}/${'Update'}/${author.AID}`
            , JSON.stringify(author)
            , {
                headers: new HttpHeaders({ 'Content-Type': 'application/json' })
            })
            .toPromise();
    }
    Delete(aid: number): Promise<string> {
        return this._http.delete<string>(`${this.baseUrl}/${'Delete'}/${aid}`
            , {
                headers: new HttpHeaders({ 'Content-Type': 'application/json' })
            })
            .toPromise();
    }
}

Angular js Custom Pipe code :

import {Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'CustomPipe'})
export class BookPipe implements PipeTransform {
    transform(value: string, gender: string): string {
        if (gender.toLowerCase() === 'male') {
            return 'Mr. ' + value;
        } else {
            return 'Miss. ' +  value;
        }
    }
}


Angular js Componet Code: 

import { Component, OnInit, ViewChild } from '@angular/core';
import { Iauthor, Icountry, Istate, Ihobby } from '../author/author.model';
import { AuthorServices } from '../author/author.services';
import { NgForm } from '@angular/forms';

@Component({
  selector: 'app-create',
  templateUrl: './create.component.html',
  styleUrls: ['./create.component.css']
})
export class CreateComponent implements OnInit {
  @ViewChild('frmauthor') private frmAuthor: NgForm;
  AUTHOR: Iauthor;
  listc: Icountry[];
  lists: Istate[];
  listh: Ihobby[];
  list: Iauthor[];
  constructor(private ahs: AuthorServices) { }

  ngOnInit() {
    this.CLR();
    this.ahs.Getc().then(data => this.listc = data);
    this.ahs.Geth().then(data => this.listh = data);
    this.fill();
  }
  del(aid: number): void {
    if (confirm('Do you want to delete it ?')) {
      this.ahs.Delete(aid).then(data => {
      alert(data);
      this.fill();
      });
    }
  }
  edit(aid: number): void {
    this.ahs.Get(aid).then(data => {
      this.fx(data.CID);
      this.AUTHOR = data;
    });
  }
  reset(fr: NgForm): void {
    fr.reset();
  }
  fill(): void {
    this.ahs.Geta().then(data => this.list = data);
  }
  fillddl(): void {
    this.fx(this.AUTHOR.CID);
  }
  fx(cid: number): void {
    this.ahs.Gets(cid).then(data => this.lists = data);
  }
  update(isValid): void {
    if (isValid) {
      this.ahs.Update(this.AUTHOR).then(data => {
        alert(data);
        this.CLR();
        this.fill();
      });
    }

  }
  save(isValid): void {
    if (isValid) {
      this.ahs.Save(this.AUTHOR).then(data => {
        alert(data);
        this.CLR();
        this.fill();
      });
    }

  }
  CLR(): void {
    this.frmAuthor.reset();
    this.AUTHOR = {
      AID: null,
      NAME: null,
      ADDRESS: null,
      PASSWORD: null,
      GENDER: null,
      EMAIL: null,
      SALARY: null,
      DOB: null,
      CID: null,
      SID: null,
      HLIST: []
    };
  }
}


Monday 5 November 2018

CURD opration using angularjs6 & webapi2




Web api code :

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApplication5.Models;

namespace WebApplication5.Controllers
{
    [RoutePrefix("api/Doorservices")]
    public class DoorservicesController : ApiController
    {
        [Route("Gets")]
        [HttpGet]
        public IHttpActionResult Gets()
        {
            try {
                using (Database1Entities obj = new Database1Entities())
                {
                    return Ok(obj.EMPs.ToList());
                }
            }
            catch (Exception ex){
                return BadRequest(ex.Message);
            }
        }
        [Route("Get/{EID:int}",Name ="EMP")]
        [HttpGet]
        public IHttpActionResult Get(int EID)
        {
            try
            {
                using (Database1Entities obj = new Database1Entities())
                {
                    return Ok(obj.EMPs.SingleOrDefault(e=>e.EID==EID));
                }
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }
        [Route("Save")]
        [HttpPost]
        public IHttpActionResult Save(EMP emp)
        {
            try
            {
                using (Database1Entities obj = new Database1Entities())
                {
                    obj.Entry(emp).State = EntityState.Added;
                    obj.SaveChanges();
                    return Created(new Uri(Url.Link("EMP",new { EID=emp.EID})), "Data Saved.");
                }
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }
        [Route("Update/{EID:int}")]
        [HttpPut]
        public IHttpActionResult Update([FromUri]int EID,[FromBody]EMP emp)
        {
            try
            {
                using (Database1Entities obj = new Database1Entities())
                {
                    obj.Entry(emp).State = EntityState.Modified;
                    obj.SaveChanges();
                    return Ok("Data Updated");
                }
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }
        [Route("Delete/{EID:int}")]
        [HttpDelete]
        public IHttpActionResult Delete([FromUri]int EID)
        {
            try
            {
                using (Database1Entities obj = new Database1Entities())
                {
                    obj.Entry(obj.EMPs.Find(EID)).State = EntityState.Deleted;
                    obj.SaveChanges();
                    return Ok("Data Deleted");
                }
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }


    }
}

angularjs code

Model code;
export class DoorModel {
    EID: number;
    NAME: string;
}

Service code :

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { DoorModel } from '../door/doormodel';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';


@Injectable()
export class DoorServices {
    baseUrl = 'http://localhost:2813/api/Doorservices';
    constructor(private _http: HttpClient) {
    }
    Save(emp: DoorModel): Promise<string> {
        return this._http.post<string>(`${this.baseUrl}/${'Save'}`, JSON.stringify(emp),
            { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }).toPromise();
    }
    Gets(): Promise<DoorModel[]> {
        return this._http.get<DoorModel[]>(`${this.baseUrl}/${'Gets'}`).toPromise();
    }
    Get(eid: number): Promise<DoorModel> {
        return this._http.get<DoorModel>(`${this.baseUrl}/${'Get'}/${eid}`)
            .toPromise();
    }
    Update(emp: DoorModel): Promise<string> {
        return this._http.put<string>(`${this.baseUrl}/${'Update'}/${emp.EID}`
            , JSON.stringify(emp), { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) })
            .toPromise();
    }
    Delete(eid: number): Promise<string> {
        return this._http.delete<string>(`${this.baseUrl}/${'Delete'}/${eid}`)
        .toPromise();
    }
}

Component  code :

import { Component, OnInit } from '@angular/core';
import { DoorModel } from '../door/doormodel';
import { DoorServices } from '../door/door.services';
import { NgForm } from '@angular/forms';

@Component({
  selector: 'app-create',
  templateUrl: './create.component.html',
  styleUrls: ['./create.component.css']
})
export class CreateComponent implements OnInit {
  EMP: DoorModel;
  list: DoorModel[];
  constructor(private ds: DoorServices) { }

  ngOnInit() {
    this.CLR();
    this.fill();
  }
  CLR(): void {
    this.EMP = {
      EID: null,
      NAME: null
    };
  }
  save(Isvalid: boolean): void {
    if (Isvalid) {
      this.ds.Save(this.EMP).then(data => {
        alert(data);
        this.CLR();
        this.fill();
      });
    }

  }
  update(Isvalid: boolean): void {
    if (Isvalid) {
      this.ds.Update(this.EMP).then(data => {
        alert(data);
        this.CLR();
        this.fill();
      });
    }

  }
  reset(ngfrm: NgForm): void {
    ngfrm.reset();
  }
  fill(): void {
    this.ds.Gets().then(data => this.list = data);
  }
  Edit(eid: number): void {
    this.ds.Get(eid).then(data => this.EMP = data);
  }
  del(eid: number): void {
    if (confirm('Do you want to delete it ?')) {
      this.ds.Delete(eid).then(data => {
        alert(data);
        this.fill();
      });
    }

  }
}


view code :

<form class="form-horizontal" #empform="ngForm">
    <div class="form-group " [class.has-error]="EID.invalid && EID.touched" [class.has-success]="EID.valid">
        <label class="control-label col-lg-4">EID</label>
        <div class="col-lg-4">
            <input type="text" class="form-control" [(ngModel)]="EMP.EID" #EID="ngModel" required name="EID" />
        </div>
        <span class="help-block has-error" *ngIf="EID.invalid && EID.touched">
            Eid should not be blank.
        </span>
    </div>
    <div class="form-group " [class.has-error]="NAME.invalid && NAME.touched" [class.has-success]="NAME.valid">
        <label class="control-label col-lg-4">NAME</label>
        <div class="col-lg-4">
            <input type="text" class="form-control" [(ngModel)]="EMP.NAME" #NAME="ngModel" required name="NAME" />
        </div>
        <span class="help-block has-error" *ngIf="NAME.invalid && NAME.touched">
            Name should not be blank.
        </span>
    </div>
    <div class="form-group">
        <label class="control-label col-lg-4"></label>
        <div class="col-lg-4">
           <input type="button" value="Save" (click)="save(empform.valid)" style="width:80px" class="btn btn-primary" />
            <input type="button" value="Update" (click)="update(empform.valid)" style="width:80px" class="btn btn-primary" />
            <input type="button" value="Reset" (click)="reset(empform)" style="width:80px" class="btn btn-primary" />

        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-lg-4"></label>
        <div class="col-lg-4">
            <table class="table table-bordered table-condensed table-hover table-responsive table-striped">
                <thead class="bg bg-primary">
                    <tr>
                        <th>Sl NO.</th>
                        <th>EID</th>
                        <th>NAME</th>
                        <th>ACTION</th>
                    </tr>
                </thead>
                <tbody>
                    <tr *ngFor="let c of list;let i=index">
                        <td>{{i+1}}</td>
                        <td>{{c.EID}}</td>
                        <td>{{c.NAME}}</td>
                        <td>
                            <a (click)="Edit(c.EID)">Edit</a> |
                            <a (click)="del(c.EID)">Delete</a> 
            
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
    
    </form>