尝试新的Angular 2.0.0-rc.1而没有被删除的东西。
我希望组件可以使用或不使用path参数。由于我无法弄清楚可选参数的语法(例如。/detail/:id?
或/detail[/:id]
不起作用),我可以选择声明单独的路由。根据我声明@Routes的顺序,我正在点击异常
为什么这样好:
@Routes([
{ component: HeroDetailComponent, path: '/detail/:id' },
{ component: HeroDetailComponent, path: '/detail' }
])
而这不是:
@Routes([
{ component: HeroDetailComponent, path: '/detail' },
{ component: HeroDetailComponent, path: '/detail/:id' }
])
访问参数化网址时:localhost/detail/1
我收到异常:
EXCEPTION:错误:未捕获(在承诺中):组件 ' HeroDetailComponent'没有路线配置
参考组件类:
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);
}
}
答案 0 :(得分:1)
是的,订单很重要。应该首先采用更具体的路线,而不是具体路线。
这不是故意的,而是对当前@angular/router
的限制。
目前尚不清楚他们将如何推进路由器。如果您刚刚开始从@angular/router-deprecated
迁移,那么最好等到路由器策略明确。