如何在 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' }]);
  }
}