我想知道是否有办法在调用navigate
方法时获取Angular路由器生成 的网址。
例如:
this._router.navigate(['browse'], { queryParams: { section: 'users', isActive: true } });
可能会导致/browse#?section=users&isActive=true
如何在不执行导航或更新浏览器中的URL的情况下获取此路线?
答案 0 :(得分:5)
this._router.createUrlTree(
['browse'], { queryParams: { section: 'users', isActive: true } });
返回的对象,UrlTree
有一个toString
函数,可以为您提供所需的内容。
您可以在内部navigate
实际使用createUrlTree
的{{3}}中看到:
navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}): Promise<boolean> {
validateCommands(commands);
return this.navigateByUrl(this.createUrlTree(commands, extras), extras);
}
答案 1 :(得分:0)
查看Angular 4 routing - redirectTo with skipLocationChange的所选答案 您可以订阅路由器导航事件并添加&#34; skipLocationChange&#34;避免切换URL的参数
答案 2 :(得分:0)
该代码同时适用于:哈希(例如https://site/#/user)和非哈希网址
public openInNewTab(router: Router, namedRoute) {
let newRelativeUrl = router.createUrlTree([namedRoute]);
let baseUrl = window.location.href.replace(router.url, '');
window.open(baseUrl + newRelativeUrl, '_blank');
}