Angular 2:如何使用replaceState更改激活的路由URL

时间:2017-11-22 08:52:18

标签: angular routes angular-ui-router

我在使用replaceState时遇到与激活路由相关的问题。我要做的是在提交form之后,我将路径网址中的keyIdid替换为我得到的回复。

我在这里解释一下。以下是我激活的路线网址:

home/screen/user/detail/keyId/id

我在此视图下有表格,我用以下方法提交表单:

onSubmit(userItem: UserItem){ 
     this.userService.saveUser(userItem).subscribe(res => {
     let keyId = res.keyId;
     let id = res.id;

     // tried this but doesn't work
     /* this.router.navigate(["home/screen/user/detail/" + keyId + "/" + id], { replaceUrl: true }) */

     // this one working but seems like temporary fix
     this.location.replaceState("home/screen/user/detail/" + keyId + "/" + id);
   })
  }

上面的代码用新的keyIdid替换路由网址,但是如果我刷新页面,则会出现无法匹配任何路由的错误。但我的要求是,一旦我刷新页面,它应该加载更改的URL。

我尝试router.navigate代替replaceState,但它没有按预期工作。如果有人能在这种情况下帮助我,那么我将非常感激。

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码来完成这项工作:

 this._router.navigate(['YourUrl/UpdatedKeyId/id']);
 window.location.reload();

答案 1 :(得分:0)

还可以在 Angular 2 + (即 Angular 9 )中工作

您尝试过吗?

import { Location } from '@angular/common';

constructor(private location: Location) { }

this.location.replaceState('/your-url/blah/blah');

以上内容摘自以下example

希望这对某人有帮助:)

谢谢