Как получить имя последнего сегмента URL в Angular 2 RC1 Router

У меня есть маршрутизатор 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');
    }
  }
}

Как я могу достичь такой функциональности? Есть идеи? Спасибо!

1 ответ

Я совершил нечто подобное

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);
  });
}

См. Также /questions/8323254/angular-2-rc1-poluchenie-parametrov-iz-ishodnogo-ispolzovannogo-url/8323260#8323260 или /questions/25451864/angular2-poluchit-parametryi-marshrutizatora-za-predelami-marshrutizatora-rozetki/25451873#25451873

Другие вопросы по тегам