import {Component,OnInit} from 'angular2/core'; import { Hero } from './hero'; import { HeroService } from './hero-service'; import { HeroDetailComponent } from './my-hero-detail'; @Component({ selector: 'my-app',template: ` <h1>{{title}}</h1> <h2>My Heroes</h2> <ul class="heroes"> <li *ngFor="#hero of heroes" [class.selected]="hero === selectedHero" (click)="onSelect(hero)"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> </ul> <my-hero-detail [hero]="selectedHero"></my-hero-detail> `,styles: [` .selected { background-color: #CFD8DC !important; color: white; } .heroes { margin: 0 0 2em 0; list-style-type: none; padding: 0; width: 15em; } .heroes li { cursor: pointer; position: relative; left: 0; background-color: #EEE; margin: .5em; padding: .3em 0; height: 1.6em; border-radius: 4px; } .heroes li.selected:hover { background-color: #BBD8DC !important; color: white; } .heroes li:hover { color: #607D8B; background-color: #DDD; left: .1em; } .heroes .text { position: relative; top: -3px; } .heroes .badge { display: inline-block; font-size: small; color: white; padding: 0.8em 0.7em 0 0.7em; background-color: #607D8B; line-height: 1em; position: relative; left: -1px; top: -4px; height: 1.8em; margin-right: .8em; border-radius: 4px 0 0 4px; } `],providers: [HeroService],directives: [HeroDetailComponent] }) export class AppComponent implements OnInit { title = 'Tour of Heroes'; heroes:Hero[]; selectedHero:Hero; constructor(private heroService:HeroService) { } getHeroes():void { this.heroes = this.heroService.getHeroes(); } ngOnInit():void { this.getHeroes(); } onSelect(hero:Hero):void { this.selectedHero = hero; } }
/** * Created by dell on 2016/9/9. */ import {Component,Input} from 'angular2/core'; import { Hero } from './hero'; @Component({ selector: 'my-hero-detail',template: ` <div *ngIf="hero"> <h2>{{hero.name}} details!</h2> <div><label>id: </label>{{hero.id}}</div> <div> <label>name: </label> <input [(ngModel)]="hero.name" placeholder="name"/> </div> </div> ` }) export class HeroDetailComponent { @Input() hero: Hero; } /* Copyright 2016 Google Inc. All Rights Reserved. Use of this source code is governed by an MIT-style license that can be found in the LICENSE file at http://angular.io/license */
import { Injectable } from 'angular2/core'; import { Hero } from './hero'; import { HEROES } from './mock-heroes'; @Injectable() export class HeroService { getHeroes(): Hero[] { return HEROES; } }
/** * Created by dell on 2016/9/12. */ import { Hero } from './hero'; export const HEROES: Hero[] = [ {id: 11,name: 'Mr. Nice'},{id: 12,name: 'Narco'},{id: 13,name: 'Bombasto'},{id: 14,name: 'Celeritas'},{id: 15,name: 'Magneta'},{id: 16,name: 'RubberMan'},{id: 17,name: 'Dynama'},{id: 18,name: 'Dr IQ'},{id: 19,name: 'Magma'},{id: 20,name: 'Tornado'} ];
/** * Created by dell on 2016/9/9. */ export class Hero { id: number; name: string; }