【问题标题】:Angular4 get a routes full UrlAngular4获得完整的路线网址
【发布时间】:2018-06-23 23:11:43
【问题描述】:

我正在尝试获取路线的完整 URL,但似乎没有任何效果,而且我找不到任何文档来执行此操作。

我发现了类似的问题:Get current url in Angular 4

我尝试过使用this._router.url,但它只给出了路径。我需要整个 Url,包括方案等。

有谁知道我如何获取路线的完整 URL?

【问题讨论】:

  • 您必须使用文档对象。我找到了解决方案here

标签: angular routing


【解决方案1】:

试试这个

导入部分

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

构造函数部分

constructor(private _location: Location) {
 console.log(this._location.path()); //will give you current url
}

【讨论】:

  • 我不明白为什么这是公认的答案。 OP 想要完整的 url,包括方案。这仅返回 router.url 返回的内容,仅返回路径,仅此而已。
【解决方案2】:

Ankur Garg 给出的解决方案有效,因为 location.path() 返回地址栏中的路径,而不是当前可见的组件路由。

这在用户在地址栏中输入 url 并按下回车键的情况下特别有用。

比如你输入https://somedomain.com/sent,这个请求会先到服务器,不会被角度路由处理。在单页应用程序 (SPA) 上常见的捕获所有场景的情况下,无论请求的 URL 是什么,服务器总是将 index.html 发回,首先加载的是 app.component,并且在其中,如果您使用 router.url,您将始终得到“/”而不是“/sent”。

因此,如果您需要存储用户最初请求的路径,您可以使用 location.path() 并将其保存在某个地方。在客户端完成所有操作后,例如身份验证、访问验证等,您始终可以将用户重定向到最初请求的路径。

这不仅适用于地址栏中输入的网址,还适用于通过电子邮件、社交媒体等共享的网址。

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 2012-08-18
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多