【发布时间】:2018-06-23 23:11:43
【问题描述】:
我正在尝试获取路线的完整 URL,但似乎没有任何效果,而且我找不到任何文档来执行此操作。
我发现了类似的问题:Get current url in Angular 4
我尝试过使用this._router.url,但它只给出了路径。我需要整个 Url,包括方案等。
有谁知道我如何获取路线的完整 URL?
【问题讨论】:
-
您必须使用文档对象。我找到了解决方案here
我正在尝试获取路线的完整 URL,但似乎没有任何效果,而且我找不到任何文档来执行此操作。
我发现了类似的问题:Get current url in Angular 4
我尝试过使用this._router.url,但它只给出了路径。我需要整个 Url,包括方案等。
有谁知道我如何获取路线的完整 URL?
【问题讨论】:
试试这个
导入部分
import {Location} from '@angular/common';
构造函数部分
constructor(private _location: Location) {
console.log(this._location.path()); //will give you current url
}
【讨论】:
Ankur Garg 给出的解决方案有效,因为 location.path() 返回地址栏中的路径,而不是当前可见的组件路由。
这在用户在地址栏中输入 url 并按下回车键的情况下特别有用。
比如你输入https://somedomain.com/sent,这个请求会先到服务器,不会被角度路由处理。在单页应用程序 (SPA) 上常见的捕获所有场景的情况下,无论请求的 URL 是什么,服务器总是将 index.html 发回,首先加载的是 app.component,并且在其中,如果您使用 router.url,您将始终得到“/”而不是“/sent”。
因此,如果您需要存储用户最初请求的路径,您可以使用 location.path() 并将其保存在某个地方。在客户端完成所有操作后,例如身份验证、访问验证等,您始终可以将用户重定向到最初请求的路径。
这不仅适用于地址栏中输入的网址,还适用于通过电子邮件、社交媒体等共享的网址。
【讨论】: