From 8c0ecca40fdf4a3e4fce3ac78ba9dc3f9708aaff Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Tue, 6 Sep 2016 14:43:07 +0200 Subject: [PATCH] Move duck list to a service Signed-off-by: Gergely Polonkai --- app/app.component.ts | 26 ++++++++++++++++---------- app/duck.service.ts | 11 +++++++++++ app/ducks.component.ts | 35 +++++++++++++++++++++++++++++++++++ app/mocked-data.ts | 7 +++++++ 4 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 app/duck.service.ts create mode 100644 app/ducks.component.ts create mode 100644 app/mocked-data.ts diff --git a/app/app.component.ts b/app/app.component.ts index 2f6eeef..1bac516 100644 --- a/app/app.component.ts +++ b/app/app.component.ts @@ -1,21 +1,27 @@ -import { Component } from "@angular/core"; +import { Component, OnInit } from "@angular/core"; import { Duck } from "./models"; - -const DUCKS: Ducks[] = [ - { id: 1, color: 'yellow' }, - { id: 2, color: 'blue' }, - { id: 3, color: 'pink' } -] +import { DuckService } from "./duck.service"; @Component({ selector: "duckbook-front", - templateUrl: "/app/app.component.html" + templateUrl: "/app/app.component.html", + providers: [ DuckService ] }) -export class AppComponent { - ducks = DUCKS; +export class AppComponent implements OnInit { + ducks = []; selectedDuck: Duck; + constructor(private duckService: DuckService) {} + + ngOnInit(): void { + this.getDucks(); + } + + getDucks(): void { + this.duckService.getDucks().then(ducks => this.ducks = ducks); + } + onSelect(duck: Duck): void { console.log(duck); this.selectedDuck = duck; diff --git a/app/duck.service.ts b/app/duck.service.ts new file mode 100644 index 0000000..f14ae48 --- /dev/null +++ b/app/duck.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from "@angular/core"; + +import { Duck } from "./models"; +import { DUCKS } from "./mocked-data"; + +@Injectable() +export class DuckService { + getDucks(): Promise { + return Promise.resolve(DUCKS); + } +} diff --git a/app/ducks.component.ts b/app/ducks.component.ts new file mode 100644 index 0000000..0c10b2a --- /dev/null +++ b/app/ducks.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { Duck } from "./models"; +import { DuckService } from "./duck.service"; + +@Component({ + selector: "ducks", + templateUrl: "/app/ducks.component.html", + providers: [ DuckService ] +}) +export class DucksComponent implements OnInit { + ducks = []; + selectedDuck: Duck; + + constructor(private router: Router, + private duckService: DuckService) + {} + + ngOnInit(): void { + this.getDucks(); + } + + getDucks(): void { + this.duckService.getDucks().then(ducks => this.ducks = ducks); + } + + onSelect(duck: Duck): void { + this.selectedDuck = duck; + } + + gotoDetail(duck: Duck): void { + this.router.navigate(['/detail', duck.id]); + } +} diff --git a/app/mocked-data.ts b/app/mocked-data.ts new file mode 100644 index 0000000..9779587 --- /dev/null +++ b/app/mocked-data.ts @@ -0,0 +1,7 @@ +import { Duck } from "./models"; + +export const DUCKS: Duck[] = [ + { id: 1, color: 'yellow' }, + { id: 2, color: 'blue' }, + { id: 3, color: 'pink' } +];