Angular2+路由-可选路由参数
Angular2+路由-可选路由参数
所以我有类似于/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}
在Angular2+中,如果想要定义可选参数的路由,类似于在ExpressJS中的用法,是否有任何方法可以实现呢?简单的回答是不行,你必须为每个单独的路径定义新的路由。
虽然如此,你可以使用ActivatedRoute在路由的组件中验证路径并确定是否有可选参数。
解决方法:需要为每个可能的路径定义一个新的路由,然后在组件中使用ActivatedRoute来验证路径并确定是否有可选参数。
代码示例:
{path: 'users', component: ItemsComponent}, {path: 'users/:filter', component: ItemsComponent}
以上是两个路由的定义,第一个路由是没有可选参数的,第二个路由是有可选参数的。在ItemsComponent组件中,可以使用ActivatedRoute来获取路由参数,并根据参数的有无进行相应的处理。