Как получить имя последнего сегмента 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