2016-12-07 7 views
4

Я хочу, чтобы иметь маршрут с этим URLУгловое 2 Маршрутизатор: множественный маршрут параметры

/collections/:collectionId/books/:bookId/:title 

например

/collections/10/books/456678/my-book.html 

в моем приложении-routing.module.ts файл

{path: 'collections/:collectionId/books/:bookId/:title', component: BookDetailsComponent}, 

ли возможен без использования вложенных точек маршрутизатора?

Я попытался

this.router.navigate(['/collections',{collectionId: 10, bookId: 456678, title: "my-book.html"}]); 

но получил сообщение об ошибке, как

Cannot match any routes. URL Segment: 'collections;collectionId=10;bookId=456678;title=my-book.html' 

если передать в качестве Счетчики массива вместо этого,

this.router.navigate(['/collections', 10, 456678, "my-book.html"]); 

Я получаю

Error: Cannot match any routes. URL Segment: 'collections/10/456678/my-book.html 

Мне удалось добиться того, что я хотел использовать детским маршрутом «книги» по маршруту «коллекции», но я хотел бы сделать это без вложенных маршрутов.

Благодаря

+0

Что именно вы передаете как массив для 'router.navigate'? – Dimanoid

+0

@Dimanoid: я отредактировал мой вопрос, чтобы показать больше кода – David

+0

Вы пропустили «книги» как часть пути – Dimanoid

ответ

11

Это должно быть

this.router.navigate(['/collections', '10', 'books', '456678', "my-book.html"]); 

Кавычки вокруг числа не являются необходимыми, но я думаю, что это хорошая практика.

+0

Спасибо. Однако он работает только в том случае, если у меня есть <роутер-outet> в соответствующем шаблоне, так как в противном случае я получаю ошибку. Не могу найти основную розетку для загрузки «BookDetailsComponent» – David

+0

Спасибо за подсказку о запятой. Не уверен, что вы имеете в виду с выходом маршрутизатора. Роутер-розетка всегда обязательна. Если вы считаете, что это не должно быть для вашего случая, то Plunker с репродукцией отлично справится. –

+0

Код (this.router.navigate ...) находится в CollectionComponent, шаблон которого не содержит выхода маршрутизатора. Мой маршрутизатор находится в моем AppComponent. Я попытаюсь создать плункер – David

Смежные вопросы