【发布时间】:2018-05-16 22:38:37
【问题描述】:
想知道是否有办法检索给定路线的完整网址?
在 Angular 应用程序中,您可能会使用 router.navigate('...'),它会立即将您的浏览器导航到给定的路由,但是有没有办法只构建 URL 字符串?
用例是与 OAuth2 等 3rd 方服务进行通信,我需要提供回调 url,我不希望手动构建它,而是调用类似 router.urlFor('callback') 的东西,这将产生类似 "http://localhost:4200/callback" 的东西
有Location 服务有prepareExternalUrl 但不幸的是它不是需要的
编辑:
目前看来这是不可能的,也没有简单的开箱即用解决方案,但在查看源代码后找到以下解决方案:
const urlTree = router.createUrlTree(['callback'], {
queryParams: { foo: 'bar' },
fragment: 'acme'
});
const path = location.prepareExternalUrl(urlTree.toString());
const url = window.location.origin + path;
console.log(url); // http://localhost:4200/callback?foo=bar#acme
createrUrlTree 在routerLink 指令下被调用
【问题讨论】:
-
你试过this吗?
-
@NishadAhsan ActivatedRoute - 包含有关与在插座中加载的组件关联的路线的信息。换句话说,ActivatedRoute 可用于获取有关当前路线的信息,而不是用于生成 url
-
你喜欢任何答案吗?你会选择一个并将其标记为正确的吗?谢谢!
标签: angular