如果我有3个URL使用相同的angular2组件,我如何检测差异?

时间:2016-03-02 19:13:37

标签: angular angular2-routing

我希望/ 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个州吗?

2 个答案:

答案 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参数。