<!DOCTYPE html>
<html>
  <head>
    <!-- We set the base href -->
    <script>document.write('<base href="' + document.location + '" />');</script>
   
    <title>Angular 2 Router</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- CSS file -->
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
   
    <link rel="stylesheet" type="text/css" href="style.css">

    <!-- IE polyfills, keep the order please -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.33.3/es6-shim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.20/system-polyfills.js"></script>
    
    <!-- Agular 2 -->
    <script src="https://code.angularjs.org/2.0.0-beta.7/angular2-polyfills.js"></script>
    <script src="https://code.angularjs.org/tools/system.js"></script>
    <script src="https://code.angularjs.org/tools/typescript.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.7/Rx.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.7/angular2.dev.js"></script>
    
    <!-- Agular 2 Router -->
    <script src="https://code.angularjs.org/2.0.0-beta.7/router.dev.js"></script>
     <!-- Config Agular 2 and Typescript -->
    <script>
      System.config({
        transpiler: 'typescript', 
        typescriptOptions: { emitDecoratorMetadata: true }, 
        packages: {'app': {defaultExtension: 'ts'}} 
      });
      System.import('app/main')
            .then(null, console.error.bind(console));
    </script>

  </head>

  <!-- Run the application -->
  <body>
    <h1>Angular 2 Services Example</h1>
    <my-app>Loading Sample...</my-app>
    
    <div style="padding-top:50px">
      
          <a target="_blank" href="http://www.angulartypescript.com/angular-2-tutorial/" title="Angular 2 Tutorial"> 
     <img src="http://www.angulartypescript.com/wp-content/uploads/2016/03/learn-more-angular-2.png" alt="Smiley face" height="200" width="500">   
    </a> 
      
    <ul class="nav nav-pills nav-stacked" >
        <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-tutorial/" title="Angular 2 Home"> Angular 2 Tutorial </a></li>
      <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-introduction/">Angular 2 Introduction</a></li>
      <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-architecture/">Angular 2 Architecture</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-annotations/">Angular 2 Annotations</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-getting-started/">Angular 2 Setup</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-hello-world/">Angular 2 Hello World</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-components/">Angular 2 Components</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-template-syntax/">Angular 2 Template Syntax</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-data-binding/">Angular 2 Data Binding</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-forms/">Angular 2 Forms</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-formbuilder-example/">Angular 2 Formbuilder</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-router-example/">Angular 2 Router</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-http-example-typescript/">Angular 2 HTTP</a></li>
  <li><a target="_blank" href="http://www.angulartypescript.com/angular-2-services/">Angular 2 Service</a></li> 

    </ul>
</div>
  </body>

</html>
<!-- 
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
-->
/* Styles go here */

<div>
    <table>
        <tr>
            <td>Planet Name</td>
            <td><input type="text" [(ngModel)]="planet.name" /></td>
        </tr>
        <tr>
            <td>Car Color</td>
            <td><input type="text" [(ngModel)]="planet.surface" /></td>
        </tr>
    </table>
</div>
<!-- 
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
-->
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
import {Component} from 'angular2/core';

@Component({
    selector: "planet",
    templateUrl: "app/planet.component.html",
    inputs:["planet"]
})
export class PlanetComponent{
    public planet = {};
}
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
import {Injectable} from 'angular2/core';
import {PLANETS} from './planets-data';

@Injectable()
export class PlanetService {
    getPlanets(){
        return Promise.resolve(PLANETS);
    }
}
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
export interface Planet{
    id:number,
    name: string,
    surface: string,
    parentSystem: string,
}
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/
<div>
    <h3 class="title">Angular 2 Services - Example</h3>
    <ul>
        <li
                *ngFor = "#planet of planets"
                (click)="onNameClick(planet)" [class.clicked]="selectedPlanet === planet">
            {{planet.name}} [ its surface is : {{planet.surface}} ]
        </li>
    </ul>
    <planet [planet]="selectedPlanet"></planet>
</div>
<hr>
 
<!-- 
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
-->
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
import {Planet} from "./planet";

export const PLANETS: Planet[] = [
    {id:1,name:'Earth',surface:'Rocky',parentSystem:'Solar System'},
    {id:2,name:'Mars',surface:'Rocky',parentSystem:'Solar System'},
    {id:1,name:'Jupiter',surface:'Gaseous',parentSystem:'Solar System'},
    {id:1,name:'Mercury',surface:'Rocky',parentSystem:'Solar System'},
];
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
import {Component} from "angular2/core";
import {PlanetService} from "./planet.service"; //1
import {PlanetComponent} from "./planet.component";
import {Planet} from "./planet";


@Component({
    selector: "my-app",
    templateUrl: "app/planet-list.component.html",
    directives: [PlanetComponent],
    providers:[PlanetService], //2
    styles:[`
                body{
                    padding:0;
                    margin:0;
                    font-family:Roboto,Arial,sans-serif;
                    font-size:16px
                }
                .title {
                    color:#018EFA;
                }
                .clicked{
                    background-color: #9C00FE;
                    color:white;
                }
                .labels{
                    background-color: black;
                    color: white;
                }
    `]
})
export class PlanetListComponent{
    public planets : Planet[];

    public selectedPlanet = {};

    public onNameClick(planet){
        this.selectedPlanet = planet;
    }
    constructor(private _planetService: PlanetService){  // 3
        this.getPlanets();
    }

    // make a call to our planet service
    getPlanets(){  //4
        this._planetService.getPlanets().then((planets:Planet[])=>this.planets = planets);
    }

}
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/
/**
 * Created by Tareq Boulakjar. from angulartypescript.com
 */
import {bootstrap} from 'angular2/platform/browser';

import {PlanetListComponent} from "./planets-list.component";

bootstrap(PlanetListComponent);
/*
Copyright 2016 angulartypescript.com. All Rights Reserved.
Everyone can use this source code; don’t forget to indicate the source please:
http://www.angulartypescript.com/ 
*/