Before moving ahead, you need to configure your Angular 2 application. Follow these articles first:
  Getting Started
     • Start Visual Studio.
    • Create a new website.
    • Provide the name and the location of website.
    • Click "Next".
  Here is my cricketer Web API.
  ![]()
  Let’s add a model component, provide an appropriate name, and add reference of model class and other important assemblies.
  - export class Cricketer {  
- constructor(  
- ID: number,  
- Name: string,  
- ODI: number,  
- Test: number  
- ) { }  
- }  
 
Now, let’s add a new service component and provide name.
  
- import { Injectable } from '@angular/core';  
- import { Http, Headers, RequestOptions, Response } from '@angular/http';  
- import { Cricketer } from './Cricketer';  
- import { Observable, Subject } from 'rxjs/Rx';  
- import 'rxjs/Rx'; //get everything from Rx  
- import 'rxjs/add/operator/toPromise';  
- @Injectable()  
- export class CricketerService {  
- apiUrl: string = "http://localhost:51453/api/Cricketers";// Web API URL  
- constructor(private _http: Http) { }  
- private RegenerateData = new Subject<number>();  
- RegenerateData$ = this.RegenerateData.asObservable();  
- AnnounceChange(mission: number) {  
- this.RegenerateData.next(mission);  
- }  
- // //  
- // getCricketers() {  
- // return this._http.get(this.apiUrl)  
- // .map((response) => response.json());  
- //}  
- getCricketers(): Observable<Cricketer[]> {  
- return this._http.get(this.apiUrl)  
- .map((res: Response) => res.json())  
- .catch((error: any) => Observable.throw(error.json().error || 'Server error'));  
- }  
- }  
Now, let’s add a cricketer component and give reference of service and model class.
 
  
- import { Component } from '@angular/core';  
- import { CricketerService } from './shared/cricketerservice';  
- import { Cricketer } from './shared/Cricketer';  
- import { Observable } from 'rxjs/Rx';  
- @Component({  
- moduleId: module.id,  
- selector: 'cricketer-component',  
- templateUrl: 'cricketercomponent.html',  
- providers: [CricketerService]  
- })  
- export class CricketerComponent {  
- cricketers: Observable<any[]>;  
- constructor(private _cricketerService: CricketerService) {  
- }  
- ngOnInit() {  
- this.getCricketers();  
- }  
- //  
- getCricketers() {  
- debugger  
- thisthis.cricketers = this._cricketerService.getCricketers();  
- }  
- }  
This is my cricketer component html.
 
  
- <div class="row">  
- <div class="table-responsive">  
- <table class="table ">  
- <thead class="thead-default">  
- <th>ID</th>  
- <th>Player</th>  
- <th>Total ODI</th>  
- <th>Total Test</th>  
- <th></th>  
- </thead>  
- <tbody>  
- <tr *ngFor="let cric of cricketers | async" scope="row">  
- <td>{{cric.ID}}</td>  
- <td>{{cric.Name}}</td>  
- <td>{{cric.ODI}}</td>  
- <td>{{cric.Test}}</td>  
- <td>  
- <button type="button" value="Update" class="btn btn-default" (click)='editCricketer(cric.ID, cric)'>Update</button>  
- <button type="button" value="Delete" class="btn btn-danger" (click)='deleteCricketer(cric.ID)'>Delete</button>  
- </td>  
- </tr>  
- </tbody>  
- </table>  
- </div>  
- <div class="col-md-offset-3 col-md-3">  
- <a routerLink="/addcricketercomponent" class="btn btn-warning">Add Player</a>  
- </div>  
- </div>  
Now, add the references of component and service in app.module.ts.
 
  
- import { NgModule } from '@angular/core';  
- import { BrowserModule } from '@angular/platform-browser';  
- import { FormsModule } from '@angular/forms';  
- import { HttpModule } from '@angular/http';  
- import { CricketerComponent } from './cricketercomponent';  
- import { CricketerService } from './shared/cricketerservice';  
- import { app_routing } from './app.routing';  
- import { AddCricketerComponent } from './addcricketercomponent';  
- @NgModule({  
- imports: [BrowserModule, FormsModule, HttpModule, app_routing],  
- declarations: [CricketerComponent, AddCricketerComponent],  
- providers: [CricketerService],  
- bootstrap: [CricketerComponent, AddCricketerComponent]  
- })  
- export class AppModule { };  
Now, create a new index html page and add component name and other important files.
 
  
- <!DOCTYPE html>  
- <html>  
- <head>  
- <title></title>  
- <base href="/">  
- <meta charset="utf-8" />  
- <meta charset="utf-8" />  
- <meta name="viewport" content="width=device-width, initial-scale=1">  
- <link href="http://v4-alpha.getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet" />  
- <link href="app/css/styles.css" rel="stylesheet" />  
-   
- <script src="node_modules/core-js/client/shim.min.js"></script>  
- <script src="node_modules/zone.js/dist/zone.js"></script>  
- <script src="node_modules/reflect-metadata/Reflect.js"></script>  
- <script src="node_modules/systemjs/dist/system.src.js"></script>  
-   
- <script src="systemjs.config.js"></script>  
- <script>  
- System.import('app').catch(  
- function (err)  
- { console.error(err); });  
- </script>  
- </head>  
- <body>  
- <header class="navbar navbar-inner navbar-fixed-top">  
- <nav class="container">  
- <div class="navbar-header">  
- <span class="app-title">CRUD Operations in Angular 2 using Web API</span>  
- </div>  
- </nav>  
- </header>  
- <section class="container">  
- <cricketer-component>Loading...</cricketer-component>  
- </section>  
- <footer class="footer">  
- <div class="container">  
- <p>@Copyright 2017.</p>  
- </div>  
- </footer>  
- </body>  
- </html>  
Now, it is time to run the application and see the output.
 
![]()
  
Conclusion
  In this article, we have learnt how to get data from Web API and display using Observable in Angular 2. If you have any question or comment, drop me a line in C# Corner comments section.