1)app.component.html

<h1>Student Manager</h1>
<router-outlet></router-outlet>

2)app.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'app',
    templateUrl: 'app.component.html'
})

export class AppComponent implements OnInit {
    constructor() { }

    ngOnInit() { }
}

3)app.module.ts

import { routingModule } from './app.route';
import { StudentDeleteComponent } from './student-delete.component';
import { StudentUpdateComponent } from './student-update.component';
import { FormsModule } from '@angular/forms';
import { StudentFormComponent } from './student-form.component';
import { BrowserModule } from '@angular/platform-browser';
import { StudentService } from './student.service';
import { StudentListComponent } from './student-list.component';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';

import { HttpModule } from "@angular/http";

@NgModule({
    imports: [BrowserModule,HttpModule,FormsModule,routingModule],
    declarations: [AppComponent,StudentListComponent,StudentFormComponent,StudentUpdateComponent,
                    StudentDeleteComponent],
    providers: [StudentService],
    bootstrap:[AppComponent]
})
export class AppModule { }

4)app.route.ts

import { StudentListComponent } from './student-list.component';
import { StudentDeleteComponent } from './student-delete.component';
import { StudentUpdateComponent } from './student-update.component';
import { StudentFormComponent } from './student-form.component';
import { Routes,RouterModule } from "@angular/router";

const routes:Routes=[
    {
        path:'create',
        component:StudentFormComponent
    },
    {
        path:'update/:id',
        component:StudentUpdateComponent
    },
    {
        path:'delete/:id',
        component:StudentDeleteComponent
    },
    {
        path:'list',
        component:StudentListComponent
    },
    {
        path:'',
        redirectTo:'/list',
        pathMatch:'full'
    }
];


export const routingModule = RouterModule.forRoot(routes);

5)student-delete.component.html

<form>

        Id <input type="text" name="id" [(ngModel)]="student.id" (change)="load();"/><br/>
        Name:{{student.name}}<br/>

        <button (click)="delete();">delete</button>
    </form>

6)student-delete.component.ts

import { ActivatedRoute,Router } from '@angular/router';
import { StudentService } from './student.service';
import { Student } from './student';
import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'student-delete',
    templateUrl: 'student-delete.component.html'
})

export class StudentDeleteComponent implements OnInit {

    student:Student;

    constructor(private ss:StudentService,private route:ActivatedRoute,private router:Router) { }

        ngOnInit() {
            let id = this.route.snapshot.params["id"];
            this.load(id);
         }

         load(id) {
            this.ss.getStudentById(id).subscribe(
                (data) => this.student= data
            )
        }

     delete(){

        this.ss.deleteStudent(this.student.id).subscribe(
            (data) => this.router.navigate(["/list"])
        )
     }

}

7)student-form.component.html

<form>

    Id <input type="text" name="id" [(ngModel)]="student.id"/><br/>
    Name <input type="text" name="name" [(ngModel)]="student.name"/><br/>

    <button (click)="insert();">Insert</button>
</form>

8)student-form.component.ts

import { StudentService } from './student.service';
import { Student } from './student';
import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'student-form',
    templateUrl: 'student-form.component.html'
})

export class StudentFormComponent implements OnInit {

    student:Student;

    constructor(private ss:StudentService) { }

    ngOnInit() {
        this.student = new Student();
     }

     insert(){

        this.ss.insertStudent(this.student).subscribe(
            (data) => console.log(data)
        )
     }

}

9)student-list.component.html

<a [routerLink]="['/create']">Register</a>
<table>

    <tr *ngFor="let student of students">
        <td>{{student.id}}</td>
        <td>{{student.name}}</td>
        <td><a [routerLink]="['/update',student.id]">Update</a></td>
        <td><a [routerLink]="['/delete',student.id]">Delete</a></td>
    </tr>

</table>

)student-list.component.ts

import { StudentService } from './student.service';
import { Student } from './student';
import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'student-list',
    templateUrl: 'student-list.component.html'
})

export class StudentListComponent implements OnInit {

    students:Student[];

    constructor(private ss:StudentService) { }

    ngOnInit() { 
        this.ss.getStudents().subscribe(
            (data) => this.students = data
        )
    }
}

10)student-update.component.html

<form>

        Id <input type="text" name="id" [(ngModel)]="student.id"/><br/>
        Name <input type="text" name="name" [(ngModel)]="student.name"/><br/>

        <button (click)="update();">Update</button>
    </form>

11)student-update.component.ts

import { ActivatedRoute, Router } from '@angular/router';
import { StudentService } from './student.service';
import { Student } from './student';
import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'student-update',
    templateUrl: 'student-update.component.html'
})

export class StudentUpdateComponent implements OnInit {


    student:Student;

    constructor(private ss:StudentService,private route:ActivatedRoute,private router:Router) { }

    ngOnInit() {
        let id = this.route.snapshot.params["id"];
        this.load(id);
     }

     load(id) {
        this.ss.getStudentById(id).subscribe(
            (data) => this.student= data
        )
    }

     update(){

        this.ss.updateStudent(this.student).subscribe(
            (data) => this.router.navigate(["/list"]);
        )
     }

}

12)student.service.ts

import { Student } from './student';
import { Injectable } from '@angular/core';

import { Http } from "@angular/http";

import { Observable } from "rxjs";

import 'rxjs/add/operator/map';

@Injectable()
export class StudentService {

    constructor(private http:Http) { }

    getStudents(){
        return this.http.get("http://localhost:3000/students").map(
            (response)=>response.json()
        )
    }

    getStudentById(id:number){
        return this.http.get("http://localhost:3000/students/"+id).map(
            (response)=>response.json()
        )
    }

    insertStudent(student:Student){
        return this.http.post("http://localhost:3000/students",student).map(
            (response)=>response.json()
        )
    }

    updateStudent(student:Student){
        return this.http.put("http://localhost:3000/students/"+student.id,student).map(
            (response)=>response.json()
        )
    }

    deleteStudent(id:number){
        return this.http.delete("http://localhost:3000/students/"+id).map(
            (response)=>response.json()
        )
    }load(){
this.ss.getStudentById(this.student.id).subscribe(
(data) => this.student = data
)
}
delete(){
this.ss.deleteStudent(this.student.id).subscribe(
(data) => console.log(data)
)
}
}

}

13)student.ts

export class Student{
    id:number;
    name:string;    
}

results matching ""

    No results matching ""