在Angular中更改路线参数

时间:2018-08-09 17:56:10

标签: angular router angular-routing

例如,我有这样的网址

/mycomponent(sidebar:detail/:id)

现在,如果未指定:id,我想更改我的网址,并为参数设置另一个值。 问题是params的{​​{1}}属性是只读的。

2 个答案:

答案 0 :(得分:0)

如果未设置重定向,则可以通过编程方式进行重定向。

更好的是,在控制器中创建一个变量。它读取ID,但是如果未设置ID,则将变量设置为默认值。然后,组件中的所有内容都会从此var中读取,而不是直接从param值中读取。

伪代码:

const myParamId = param.id || 5

答案 1 :(得分:0)

您可以强制导航到所需的路线。您可以使用navigatenavigateByUrl

this.route.params
    .subscribe(params=>{
        if(params.id === null || params.id ===undefined){
            this.route.navigate(['sidebar/detail/defaultId'])
        }
    })

但是我确实认为您应该尝试重定向(也许可以查看CanActivate?),而不是在组件内部导航。定义明确的路由(具有正确的重定向和后备)要干净得多。