2

我有一个 Angular2 路由器 (RC1),它在其所有三个路由中加载相同的组件:

@Routes([
  { path: '/create',     component: MyComponent },
  { path: '/detail/:id', component: MyComponent },
  { path: '/update/:id', component: MyComponent },
])

这背后的原因是因为我需要三个非常相似的 CRUD 操作表单。所以,我决定使用同一个组件结合几个*ngIf基于组件模式(创建、细节、更新)的组件。

现在的问题是我找不到获取 URL 上最后一段的名称的方法。理想情况下,我可以做这样的事情(伪代码):

export class MyComponent {
  constructor(private router: Router) {
    this.mode = this.router.getLastURLSegmentName();
    if (this.mode == 'detail' or this.mode == 'update') {
      let param_id = this.router.getLastURLSegment().getParam('id');
    }
  }
}

我怎样才能实现这样的功能?有任何想法吗?谢谢!

4

1 回答 1

0

我完成了类似的事情

import 'rxjs/add/operator/first';
...

constructor(private router:Router, private routeSerializer:RouterUrlSerializer, private location:Location) {
  router.changes.first().subscribe(() => {

    let urlTree = this.routeSerializer.parse(location.path());
      console.log('id', urlTree.children(urlTree.children(urlTree.root)[0])[0].segment);
  });
}

另请参阅https://stackoverflow.com/a/372​​30716/217408https://stackoverflow.com/a/372​​30758/217408

于 2016-06-02T13:34:31.750 回答