Angular2 + маршрутизация - дополнительные параметры маршрута - PullRequest
0 голосов
/ 25 июня 2018

Итак, у меня есть маршруты типа /category/tech и /category/tech/new и /category/tech/old и т. Д.

все они используют ItemsComponent

Так есть ли способ определить эти типы маршрутов с необязательными параметрами, как мы делаем в ExpressJS

router.get('/category/tech/:filter?', (req, res) => ...

(здесь оба /category/tech и /category/tech/xxx будут работать)

Или я должен определить их отдельно, как

{path: 'users', component: ItemsComponent},
{path: 'users/:filter', component: ItemsComponent}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

На данный момент Angular не позволяет вам определять необязательные параметры. Таким образом, ваше решение будет состоять в том, чтобы добавить несколько похожих маршрутов - все они указывают на один и тот же компонент. Но здесь нужно отметить одну важную вещь. Если вы используете цель как component: ItemsComponent в обоих маршрутах, так как маршруты различны, компонент будет повторно создан! - Это может быть дорого в зависимости от вашего проекта. Если вы не хотите создавать экземпляр компонента для каждого маршрута, используйте вместо этого redirect. В этом случае Angular гарантирует, что компонент создается только один раз.

{path: 'users', redirectTo: 'users/'},
{path: 'users/:filter', component: ItemsComponent}

Надеюсь, это поможет!

0 голосов
/ 25 июня 2018

Итак, есть ли способ определить маршруты этого типа с помощью необязательных параметров, как мы делаем в ExpressJS

Простой ответ - Нет, вы должны определить новый маршрут для каждого отдельного пути.

{path: 'users', component: ItemsComponent},
{path: 'users/:filter', component: ItemsComponent}

Хотя вы можете проверить путь и определить, имеет ли он необязательный параметр внутри маршрутизируемого component, используя ActivatedRoute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...