如何在 Angular Component Router 中使用参数定义默认路由?
How to define default route with parameters in Angular Component Router?
我想在我的子组件中有一个默认路由(使用 useAsDefault: true
设置)并自动将参数传递给它。我在文档中找不到任何地方如何去做。
我有一个具有以下路线的父组件:
$routeConfig = [
{ path: '/employees/...', component: 'employeesComponent', name: 'Employees'}
]
和一个子组件:
$routeConfig = [
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group', useAsDefault: true}
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]
这当然失败了:
Route generator for 'group' was not included in parameters passed.
我不知道如何将一些默认参数传递给第一条路线。我确实通过创建另一个没有参数的路由来解决它,并将其用作默认值:
{ path: '/all', component: 'employeeListComponent', name: 'All', useAsDefault: true}
但这当然不理想。到目前为止,我还没有想出比使用不带参数的路由,然后使用一些默认参数立即重定向更好的方法。有没有更好的办法?
据我所知,这是不支持的。您可以有一个带参数和不带参数的路由,然后在 GroupDefault
组件中导航到 Group
$routeConfig = [
{ path: '/group', component: 'employeeListComponentDefault', name: 'GroupDefault', useAsDefault: true}
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'},
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]
另见
所以我通过以下方式解决了我的问题:我添加了一个没有参数的默认路由,我立即从 $routerOnActivate
重定向
public $routeConfig = [
{ path: '/', component: 'employeeListComponent', name: 'GroupRedirect', useAsDefault: true},
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'}
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'},
]
然后在控制器中:
public $routerOnReuse(route) {
if (!route.params.group) {
this.$router.navigate(['Group', { group: 'status', filter: 'active' }]);
}
}
我想在我的子组件中有一个默认路由(使用 useAsDefault: true
设置)并自动将参数传递给它。我在文档中找不到任何地方如何去做。
我有一个具有以下路线的父组件:
$routeConfig = [
{ path: '/employees/...', component: 'employeesComponent', name: 'Employees'}
]
和一个子组件:
$routeConfig = [
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group', useAsDefault: true}
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]
这当然失败了:
Route generator for 'group' was not included in parameters passed.
我不知道如何将一些默认参数传递给第一条路线。我确实通过创建另一个没有参数的路由来解决它,并将其用作默认值:
{ path: '/all', component: 'employeeListComponent', name: 'All', useAsDefault: true}
但这当然不理想。到目前为止,我还没有想出比使用不带参数的路由,然后使用一些默认参数立即重定向更好的方法。有没有更好的办法?
据我所知,这是不支持的。您可以有一个带参数和不带参数的路由,然后在 GroupDefault
组件中导航到 Group
$routeConfig = [
{ path: '/group', component: 'employeeListComponentDefault', name: 'GroupDefault', useAsDefault: true}
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'},
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]
另见
所以我通过以下方式解决了我的问题:我添加了一个没有参数的默认路由,我立即从 $routerOnActivate
public $routeConfig = [
{ path: '/', component: 'employeeListComponent', name: 'GroupRedirect', useAsDefault: true},
{ path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'}
{ path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'},
]
然后在控制器中:
public $routerOnReuse(route) {
if (!route.params.group) {
this.$router.navigate(['Group', { group: 'status', filter: 'active' }]);
}
}