111 lines
2.9 KiB
TypeScript
111 lines
2.9 KiB
TypeScript
|
// #docregion
|
|||
|
import {Component} from 'angular2/angular2';
|
|||
|
|
|||
|
@Component({selector: 'my-app'})
|
|||
|
export class AppComponent { }
|
|||
|
// #enddocregion
|
|||
|
|
|||
|
// #docregion initialize-routes-property
|
|||
|
export class AppComponent {
|
|||
|
public title = 'Tour of Heroes';
|
|||
|
public routes = Routes;
|
|||
|
}
|
|||
|
// #enddocregion initialize-routes-property
|
|||
|
|
|||
|
// #docregion oninit
|
|||
|
onInit() {
|
|||
|
this.heroes = this.getHeroes();
|
|||
|
}
|
|||
|
|
|||
|
getHeroes() {
|
|||
|
this.heroes = [];
|
|||
|
|
|||
|
this._heroService.getHeroes()
|
|||
|
.then((heroes: Hero[]) => this.heroes = heroes);
|
|||
|
|
|||
|
return this.heroes;
|
|||
|
}
|
|||
|
// #enddocregion oninit
|
|||
|
|
|||
|
// #docregion styles
|
|||
|
styles: [`
|
|||
|
.router-link {padding: 5px;text-decoration: none;}
|
|||
|
.router-link:visited, .router-link:link {color: #444;}
|
|||
|
.router-link:hover {color: white; background-color: #1171a3; text-decoration: none;}
|
|||
|
.router-link.router-link-active {color: white; background-color: #52b9e9; text-decoration: none;}
|
|||
|
`],
|
|||
|
// #enddocregion styles
|
|||
|
|
|||
|
// #docregion import-params
|
|||
|
import {RouteParams} from 'angular2/router';
|
|||
|
// #enddocregion import-params
|
|||
|
// #docregion inject-routeparams
|
|||
|
constructor(private _routeParams: RouteParams) {}
|
|||
|
// #enddocregion inject-routeparams
|
|||
|
// #docregion access-params
|
|||
|
export class HeroDetailComponent implements OnInit {
|
|||
|
|
|||
|
onInit() { }
|
|||
|
// #enddocregion access-params
|
|||
|
// #docregion import-onit
|
|||
|
import {Component, FORM_DIRECTIVES, OnInit} from 'angular2/angular2';
|
|||
|
// #enddocregion import-onit
|
|||
|
// #docregion onit-id-param
|
|||
|
onInit() { let id = +this._routeParams.get('id'); // TODO: get the hero using it’s id }
|
|||
|
// #enddocregion onit-id-param
|
|||
|
|
|||
|
// #docregion onit-hero-id
|
|||
|
onInit() {
|
|||
|
if (!this.hero) {
|
|||
|
let id = +this._routeParams.get('id');
|
|||
|
// TODO: get the hero using it’s id
|
|||
|
}
|
|||
|
}
|
|||
|
// #docregion onit-hero-id
|
|||
|
|
|||
|
// #docregion inject-hero-service
|
|||
|
constructor(
|
|||
|
private _heroService: HeroService,
|
|||
|
private _routeParams: RouteParams) {
|
|||
|
}
|
|||
|
// #docregion inject-hero-service
|
|||
|
|
|||
|
// #docregion onit-hero-method
|
|||
|
onInit() {
|
|||
|
if (!this.hero) {
|
|||
|
let id = +this._routeParams.get('id');
|
|||
|
this._heroService.getHero(id).then((hero: Hero) => this.hero = hero);
|
|||
|
}
|
|||
|
}
|
|||
|
// #docregion onit-hero-method
|
|||
|
|
|||
|
// #docregion select-hero
|
|||
|
import {Router} from 'angular2/router';
|
|||
|
import {Routes} from './route.config';
|
|||
|
|
|||
|
constructor(private _heroService: HeroService, private _router: Router) { }
|
|||
|
|
|||
|
gotoDetail() {
|
|||
|
this._router.navigate([`/${Routes.detail.as}`, { id: this.selectedHero.id }]);
|
|||
|
}
|
|||
|
// #enddocregion select-hero
|
|||
|
|
|||
|
// #docregion reference-heroes-component
|
|||
|
@Component({
|
|||
|
selector: 'my-heroes',
|
|||
|
templateUrl: 'app/heroes.component.html',
|
|||
|
styleUrls: ['app/heroes.component.css'],
|
|||
|
directives: [FORM_DIRECTIVES, HeroDetailComponent]
|
|||
|
})
|
|||
|
export class HeroesComponent {
|
|||
|
// #docregion reference-heroes-component
|
|||
|
|
|||
|
// #docregion reference-hero-detail-component
|
|||
|
@Component({
|
|||
|
selector: 'my-hero-detail',
|
|||
|
templateUrl: 'app/hero-detail.component.html',
|
|||
|
directives: [FORM_DIRECTIVES],
|
|||
|
inputs: ['hero']
|
|||
|
})
|
|||
|
export class HeroDetailComponent {
|
|||
|
// #enddocregion reference-hero-detail-component
|