Probieren Sie die neue Angular 2.0.0-rc.1 ohne die abgebildeten Sachen. Ich möchte eine Komponente mit oder ohne Pfadparameter arbeiten. Da ich die Syntax für den optionalen Parameter nicht herausfinden konnte (zB /detail/:id?
oder /detail[/:id]
würde nicht funktionieren), blieb mir die Option, separate Routen zu deklarieren. Je nach Auftrag ich die @Routes erklären, Ich schlage eine AusnahmeAngular2 rc1 - Ist die Reihenfolge der @Routes-Deklaration wichtig (optionaler Parameter)?
Warum ist das gut:
@Routes([
{ component: HeroDetailComponent, path: '/detail/:id' },
{ component: HeroDetailComponent, path: '/detail' }
])
und das ist nicht:
@Routes([
{ component: HeroDetailComponent, path: '/detail' },
{ component: HeroDetailComponent, path: '/detail/:id' }
])
Wenn parametrisierte URL zugreifen: localhost/detail/1
Ich erhalte eine Ausnahme:
EXCEPTION: Error: Uncaught (in promise): Component 'HeroDetailComponent' does not have route configuration
Komponentenklasse als Referenz:
import {OnActivate, RouteSegment, Router} from "@angular/router";
import {Component, Input} from '@angular/core';
import {Hero} from '../model/hero';
import {HeroService} from "../model/hero.service";
@Component({
templateUrl: 'hero-detail.component.html',
selector: 'my-hero-detail'
})
export class HeroDetailComponent implements OnActivate{
constructor(private heroService: HeroService,
private router: Router){}
@Input()
hero: Hero = new Hero();
routerOnActivate(curr: RouteSegment) {
if(curr.getParam('id') == null)
return;
let id = +curr.getParam('id');
this.heroService.get(id)
.then(hero => this.hero = hero);
}
}