<!DOCTYPE html> <html> <head> <!-- Set the base href --> <script>document.write('<base href="' + document.location + '" />');</script> <Meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="stylesheet" href="styles.css"> <!-- IE required polyfills,in this exact order --> <script src="lib/es6-shim.min.js"></script> <script src="lib/system-polyfills.js"></script> <script src="lib/shims_for_IE.js"></script> <script src="lib/angular2-polyfills.js"></script> <script src="lib/system.js"></script> <script src="lib/typescript.js"></script> <script src="lib/Rx.js"></script> <script src="lib/angular2.dev.js"></script> <!-- Add the router library --> <script src="lib/router.dev.js"></script> <script> System.config({ transpiler: 'typescript',typescriptOptions: { emitDecoratorMetadata: true },packages: {'app': {defaultExtension: 'ts'}} }); System.import('app/main') .then(null,console.error.bind(console)); </script> </head> <body> <my-app>loading...</my-app> </body> </html> </html>
import {bootstrap} from 'angular2/platform/browser'; import {ROUTER_PROVIDERS} from 'angular2/router'; import {AppComponent} from './app'; // Add these symbols to override the `LocationStrategy` //import {provide} from 'angular2/core'; //import {LocationStrategy,// HashLocationStrategy} from 'angular2/router'; bootstrap(AppComponent,[ROUTER_PROVIDERS,//provide(LocationStrategy,// {useClass: HashLocationStrategy}) // .../#/crisis-center/ ]); /* 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 {Component} from 'angular2/core'; import {RouteConfig,ROUTER_DIRECTIVES} from 'angular2/router'; import {HeroListComponent} from './heroes/hero-list.component'; import {HeroDetailComponent} from './heroes/hero-detail.component'; import {HeroService} from './heroes/hero.service'; @Component({ selector: 'my-app',template: ` <nav> <a [routerLink]="['Heroes']">Heroes</a> </nav> <router-outlet></router-outlet> `,providers: [ HeroService],directives: [ROUTER_DIRECTIVES] }) @RouteConfig([ {path: '/heroes',name: 'Heroes',component: HeroListComponent},{path: '/hero/:id',name: 'HeroDetail',component: HeroDetailComponent},]) export class AppComponent { }
import {Component,OnInit} from 'angular2/core'; import {Hero,HeroService} from './hero.service'; import {Router,RouteParams} from 'angular2/router'; @Component({ template: ` <ul class="items"> <li *ngFor="#hero of heroes" [class.selected]="isSelected(hero)" (click)="onSelect(hero)"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> </ul> ` }) export class HeroListComponent implements OnInit { heroes: Hero[]; private _selectedId: number; constructor( private _service: HeroService,private _router: Router,routeParams: RouteParams) { this._selectedId = +routeParams.get('id'); } isSelected(hero: Hero) { return hero.id === this._selectedId; } onSelect(hero: Hero) { this._router.navigate( ['HeroDetail',{ id: hero.id }] ); } ngOnInit() { this._service.getHeroes().then(heroes => this.heroes = heroes) } }
import {Component,OnInit} from 'angular2/core'; import {Hero,HeroService} from './hero.service'; import {RouteParams,Router} from 'angular2/router'; @Component({ template: ` <div *ngIf="hero"> <h3>"{{hero.name}}"</h3> <div> <label>Id: </label>{{hero.id}}</div> <div> <label>Name: </label> <input [(ngModel)]="hero.name" placeholder="name"/> </div> <p> <button (click)="gotoHeroes()">Back</button> </p> </div> `,}) export class HeroDetailComponent implements OnInit { hero: Hero; constructor( private _router:Router,private _routeParams:RouteParams,private _service:HeroService){} ngOnInit() { let id = this._routeParams.get('id'); this._service.getHero(id).then(hero => this.hero = hero); } gotoHeroes() { let heroId = this.hero ? this.hero.id : null; this._router.navigate(['Heroes',{id: heroId} ]); } }
import {Injectable} from 'angular2/core'; export class Hero { constructor(public id: number,public name: string) { } } @Injectable() export class HeroService { getHeroes() { return heroesPromise; } getHero(id: number | string) { return heroesPromise .then(heroes => heroes.filter(h => h.id === +id)[0]); } } var HEROES = [ new Hero(11,'Mr. Nice'),new Hero(12,'Narco'),new Hero(13,'Bombasto'),new Hero(14,'Celeritas'),new Hero(15,'Magneta'),new Hero(16,'RubberMan') ]; var heroesPromise = Promise.resolve(HEROES);
/* Master Styles */ h1 { color: #369; font-family: Arial,Helvetica,sans-serif; font-size: 250%; } h2,h3 { color: #444; font-family: Arial,sans-serif; font-weight: lighter; } body { margin: 2em; } body,input[text],button { color: #888; font-family: Cambria,Georgia; } a { cursor: pointer; cursor: hand; } button { font-family: Arial; background-color: #eee; border: none; padding: 5px 10px; border-radius: 4px; cursor: pointer; cursor: hand; } button:hover { background-color: #cfd8dc; } button:disabled { background-color: #eee; color: #aaa; cursor: auto; } /* Navigation link styles */ nav a { padding: 5px 10px; text-decoration: none; margin-top: 10px; display: inline-block; background-color: #eee; border-radius: 4px; } nav a:visited,a:link { color: #607D8B; } nav a:hover { color: #039be5; background-color: #CFD8DC; } nav a.router-link-active { color: #039be5; } /* items class */ .items { margin: 0 0 2em 0; list-style-type: none; padding: 0; width: 24em; } .items li { cursor: pointer; position: relative; left: 0; background-color: #EEE; margin: .5em; padding: .3em 0; height: 1.6em; border-radius: 4px; } .items li:hover { color: #607D8B; background-color: #DDD; left: .1em; } .items li.selected:hover { background-color: #BBD8DC; color: white; } .items .text { position: relative; top: -3px; } .items { margin: 0 0 2em 0; list-style-type: none; padding: 0; width: 24em; } .items li { cursor: pointer; position: relative; left: 0; background-color: #EEE; margin: .5em; padding: .3em 0; height: 1.6em; border-radius: 4px; } .items li:hover { color: #607D8B; background-color: #DDD; left: .1em; } .items li.selected { background-color: #CFD8DC; color: white; } .items li.selected:hover { background-color: #BBD8DC; } .items .text { position: relative; top: -3px; } .items .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; } /* everywhere else */ * { font-family: Arial,sans-serif; } /* 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 */原文链接:https://www.f2er.com/angularjs/148866.html