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();
}
);
}
}