2

3 つのルートすべてに同じコンポーネントをロードする Angular2 ルーター (RC1) があります。

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

この背後にある理由は、互いに非常によく似た CRUD アクションに 3 つのフォームが必要だからです。*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/217408またはhttps://stackoverflow.com/a/372​​30758/217408も参照してください。

于 2016-06-02T13:34:31.750 に答える