角度 2 可选路由参数

2022-08-30 00:37:41

是否可以在 Angular 2 路由中具有可选的路由参数?我在RouteConfig中尝试了Angular 1.x语法,但收到以下错误:

“原始异常:路径 ”/user/:id?“ 包含路由配置中不允许的 ”?“。

@RouteConfig([
{
    path: '/user/:id?',
    component: User,
    as: 'User'
}])

答案 1

您可以使用或不带参数定义多个路由:

@RouteConfig([
    { path: '/user/:id', component: User, name: 'User' },
    { path: '/user', component: User, name: 'Usernew' }
])

并处理组件中的可选参数:

constructor(params: RouteParams) {
    var paramId = params.get("id");

    if (paramId) {
        ...
    }
}

另请参阅相关的 github 问题:https://github.com/angular/angular/issues/3525


答案 2
{path: 'users', redirectTo: 'users/', pathMatch: 'full'},
{path: 'users/:userId', component: UserComponent}

这样,在添加参数时就不会重新呈现组件。