我希望/ foo / add,/ foo / id / 1234和/ foo / modify / 1234都使用相同的angular2组件。
{path: '/foo/id/:id', name: 'FooView', component: FooComponent},
{path: '/foo/modify/:id', name: 'FooModify', component: FooComponent},
{path: '/foo/add', name: 'FooAdd', component: FooComponent},
在FooComponent
中,如何判断要使用的三种状态中的哪一种,查看,修改或编辑?最好的方法是注入Router
并使用router.isRouteActive(router.generate(['FooView']))
用于所有3个州吗?
答案 0 :(得分:1)
实施传递下一条和之前说明的https://angular.io/docs/ts/latest/api/router/CanReuse-interface.html。这应该允许确定导致该组件的路径。
另一种方法是在https://github.com/angular/angular/pull/7163发货时获取当前说明。
目前,您还可以创建一个订阅路由更改的全局服务,并允许该组件获取当前路径。
@Injectable()
export class RouterInfoService {
currentRoute;
constructor(private router:Router) {
router.subscribe(value => { /* store route updates locally */ }
}
}
@Component( ... )
class MyComponent {
constructor(private routerInfoService:RouterInfoService) {}
someFunc() {
if(this.routerInfoService.currentRoute == ...) {
}
}
}
答案 1 :(得分:1)
做一条单行路线
{path: '/foo/:action/:id', name: 'Foo', component: FooComponent}
然后,您可以检查action
旁边的id
参数。