typescript 09. Les Routes
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript 09. Les Routes相关的知识,希望对你有一定的参考价值。
import { Component } from '@angular/core';
@Component({
selector: 'page-404',
template: `
<div class='center'>
<img src="http://assets.pokemon.com/assets/cms2/img/pokedex/full/035.png"/>
<h1>Hey, cette page n'existe pas !</h1>
<a routerLink="/pokemons" class="waves-effect waves-teal btn-flat">
Retourner à l' accueil
</a>
</div>
`
})
export class PageNotFoundComponent { }
import { Component, OnInit } from '@angular/core';
import { Pokemon } from './pokemon';
import { POKEMONS } from './mock-pokemons';
import { Router } from '@angular/router';
@Component({
selector: 'list-pokemon',
templateUrl: './app/list-pokemon.component.html'
})
export class ListPokemonComponent implements OnInit {
pokemons: Pokemon[] = null;
constructor(private router: Router) { }
ngOnInit(): void {
this.pokemons = POKEMONS;
}
selectPokemon(pokemon: Pokemon): void {
console.log('Vous avez selectionné ' + pokemon.name);
let link = ['/pokemon', pokemon.id];
this.router.navigate(link);
}
}
<h1 class='center'>Pokémons</h1>
<div class='container'>
<div class="row">
<div *ngFor='let pokemon of pokemons' class="col s6 m4">
<div class="card horizontal" (click)="selectPokemon(pokemon)" pkmn-border-card>
<div class="card-image">
<img [src]="pokemon.picture">
</div>
<div class="card-stacked">
<div class="card-content">
<p>{{ pokemon.name }}</p>
<p><small>{{ pokemon.created | date:"dd/MM/yyyy" }}</small></p>
<span *ngFor='let type of pokemon.types' class="{{ type | pokemonTypeColor }}">{{ type }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router, Params } from '@angular/router';
import { Pokemon } from './pokemon';
import { POKEMONS } from './mock-pokemons';
@Component({
selector: 'detail-pokemon',
templateUrl: './app/detail-pokemon.component.html'
})
export class DetailPokemonComponent implements OnInit {
pokemons: Pokemon[] = null;
pokemon: Pokemon = null;
constructor(private route: ActivatedRoute, private router: Router) {}
ngOnInit(): void {
this.pokemons = POKEMONS;
let id = +this.route.snapshot.paramMap.get('id');
for (let i = 0; i < this.pokemons.length; i++) {
if (this.pokemons[i].id == id) {
this.pokemon = this.pokemons[i];
}
}
}
goBack(): void {
this.router.navigate(['/pokemons']);
}
}
<div *ngIf="pokemon" class="row">
<div class="col s12 m8 offset-m2">
<h2 class="header center">{{ pokemon.name }}</h2>
<div class="card horizontal hoverable">
<div class="card-image">
<img [src]="pokemon.picture">
</div>
<div class="card-stacked">
<div class="card-content">
<table class="bordered striped">
<tbody>
<tr>
<td>Nom</td>
<td><strong>{{ pokemon.name }}</strong></td>
</tr>
<tr>
<td>Points de vie</td>
<td><strong>{{ pokemon.hp }}</strong></td>
</tr>
<tr>
<td>Dégâts</td>
<td><strong>{{ pokemon.cp }}</strong></td>
</tr>
<tr>
<td>Types</td>
<td>
<span *ngFor="let type of pokemon.types" class="{{ type | pokemonTypeColor }}">{{ type }}</span>
</td>
</tr>
<tr>
<td>Date de création</td>
<td><em>{{ pokemon.created | date:"dd/MM/yyyy" }}</em></td>
</tr>
</tbody>
</table>
</div>
<div class="card-action">
<a (click)="goBack()">Retour</a>
</div>
</div>
</div>
</div>
</div>
<h4 *ngIf='!pokemon' class="center">Aucun pokémon à afficher !</h4>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { ListPokemonComponent } from './list-pokemon.component';
import { DetailPokemonComponent } from './detail-pokemon.component';
import { BorderCardDirective } from './border-card.directive';
import { PokemonTypeColorPipe } from './pokemon-type-color.pipe';
@NgModule({
imports: [
BrowserModule,
AppRoutingModule
],
declarations: [
AppComponent,
BorderCardDirective,
PokemonTypeColorPipe,
ListPokemonComponent,
DetailPokemonComponent
],
bootstrap: [AppComponent]
})
export class AppModule { }
<nav>
<div class="nav-wrapper teal">
<a href="#" class="brand-logo center">pokemon-app</a>
</div>
</nav>
<router-outlet></router-outlet>
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { ListPokemonComponent } from './list-pokemon.component';
import { DetailPokemonComponent } from './detail-pokemon.component';
// routes
const appRoutes: Routes = [
{ path: 'pokemons', component: ListPokemonComponent },
{ path: 'pokemon/:id', component: DetailPokemonComponent },
{ path: '', redirectTo: 'pokemons', pathMatch: 'full' }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
以上是关于typescript 09. Les Routes的主要内容,如果未能解决你的问题,请参考以下文章
typescript 07. Les指令
typescript 05. Les Composants。
typescript 11. Les Services et l'injectiondedépendances。
typescript 懒惰routes.ts
typescript guard3.routes.ts
typescript guard.routes2.ts