First you need to install HttpModule using npm’s command
npm install -g @angular/http@latest
Demo Below :
app.component.html
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2"> <input type="text" #serverName> <button class="btn btn-primary" (click)="onAddServer(serverName.value)">Add Server</button> <br><br> <button class="btn btn-primary" (click)="onSave()">Save Serves</button> <button class="btn btn-primary" (click)="onGet()">Get Serves</button> <hr> <ul class="list-group" *ngFor="let server of servers"> <li class="list-group-item">{{ server.name }} (ID: {{ server.id }})</li> </ul> </div> </div> </div>
app.component.ts
import { ServersService } from './servers.service'; import { Component } from '@angular/core'; import { Response } from '@angular/http'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private serversService: ServersService) {} servers = [ { name: 'Testserver', capacity: 10, id: this.generateId() }, { name: 'Liveserver', capacity: 100, id: this.generateId() } ]; onAddServer(name: string) { this.servers.push({ name: name, capacity: 50, id: this.generateId() }); } onSave(){ console.log('On Save called'); this.serversService.storeServers(this.servers) .subscribe( (response) => console.log(response), (error) => console.log(error) ); } onGet(){ console.log('On Get Called'); this.serversService.getServers().subscribe( (response: Response) => { const data = response.json(); console.log(data); }, (error) => console.log(error) ); } private generateId() { return Math.round(Math.random() * 10000); } }
app.component.css
.container { margin-top: 50px; }
app.module.ts
import { ServersService } from './servers.service'; import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FormsModule, HttpModule ], providers: [ServersService], bootstrap: [AppComponent] }) export class AppModule { }
servers.service.ts
import { Injectable } from '@angular/core'; import { Http, Headers } from '@angular/http'; import 'rxjs/Rx'; @Injectable() export class ServersService{ constructor(private http: Http){} storeServers(servers: any[]) { const headers = new Headers({'Content-Type' : 'application/json'}) return this.http.put('https://angulardemo-64fa2.firebaseio.com/data.json', servers, {headers: headers}); } getServers(){ return this.http.get('https://angulardemo-64fa2.firebaseio.com/data.json'); } storeServersPost(servers: any[]) { const headers = new Headers({'Content-Type' : 'application/json'}) return this.http.post('https://angulardemo-64fa2.firebaseio.com/data.json', servers, {headers: headers}); } }
Final
app.component.css
.container { margin-top: 50px; }
app.component.html
<div class="container"> <div class="row"> <div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2"> <h1>{{ appName | async }}</h1> <input type="text" #serverName> <button class="btn btn-primary" (click)="onAddServer(serverName.value)">Add Server</button> <br><br> <button class="btn btn-primary" (click)="onSave()">Save Servers</button> <button class="btn btn-primary" (click)="onGet()">Get Servers</button> <hr> <ul class="list-group" *ngFor="let server of servers"> <li class="list-group-item">{{ server.name }} (ID: {{ server.id }})</li> </ul> </div> </div> </div>
app.component.ts
import { Component } from '@angular/core'; import { Response } from '@angular/http'; import { ServerService } from './server.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { appName = this.serverService.getAppName(); servers = [ { name: 'Testserver', capacity: 10, id: this.generateId() }, { name: 'Liveserver', capacity: 100, id: this.generateId() } ]; constructor(private serverService: ServerService) {} onAddServer(name: string) { this.servers.push({ name: name, capacity: 50, id: this.generateId() }); } onSave() { this.serverService.storeServers(this.servers) .subscribe( (response) => console.log(response), (error) => console.log(error) ); } onGet() { this.serverService.getServers() .subscribe( (servers: any[]) => this.servers = servers, (error) => console.log(error) ); } private generateId() { return Math.round(Math.random() * 10000); } }
app.module.ts
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { AppComponent } from './app.component'; import { ServerService } from './server.service'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FormsModule, HttpModule ], providers: [ServerService], bootstrap: [AppComponent] }) export class AppModule { }
server.service.ts
import { Injectable } from '@angular/core'; import { Headers, Http, Response } from '@angular/http'; import 'rxjs/Rx'; import { Observable } from 'rxjs/Observable'; @Injectable() export class ServerService { constructor(private http: Http) {} storeServers(servers: any[]) { const headers = new Headers({'Content-Type': 'application/json'}); // return this.http.post('https://udemy-ng-http.firebaseio.com/data.json', // servers, // {headers: headers}); return this.http.put('https://udemy-ng-http.firebaseio.com/data.json', servers, {headers: headers}); } getServers() { return this.http.get('https://udemy-ng-http.firebaseio.com/data') .map( (response: Response) => { const data = response.json(); for (const server of data) { server.name = 'FETCHED_' + server.name; } return data; } ) .catch( (error: Response) => { return Observable.throw('Something went wrong'); } ); } getAppName() { return this.http.get('https://udemy-ng-http.firebaseio.com/appName.json') .map( (response: Response) => { return response.json(); } ); } }