我在使用replaceState
时遇到与激活路由相关的问题。我要做的是在提交form
之后,我将路径网址中的keyId
和id
替换为我得到的回复。
我在这里解释一下。以下是我激活的路线网址:
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);
})
}
上面的代码用新的keyId
和id
替换路由网址,但是如果我刷新页面,则会出现无法匹配任何路由的错误。但我的要求是,一旦我刷新页面,它应该加载更改的URL。
我尝试router.navigate
代替replaceState
,但它没有按预期工作。如果有人能在这种情况下帮助我,那么我将非常感激。
答案 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。
希望这对某人有帮助:)
谢谢