You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular4如何获取路由的完整URL?

获取Angular中的完整URL

嘿,我完全懂你想要拿到包含协议、域名、完整路径的URL的需求——this._router.url确实只能返回路由对应的路径部分,没法给到你完整的URL信息。这里有两个实用的方法可以帮你实现:

方法一:直接使用浏览器的window.location对象

这是最直接的方式,浏览器的location对象本身就包含了所有URL相关的信息:

// 直接获取完整URL
const fullUrl = window.location.href;

// 或者手动拼接各部分(适合需要自定义调整的场景)
const fullUrl = `${window.location.protocol}//${window.location.host}${this._router.url}`;

window.location.href会直接返回当前页面的完整URL,比如https://example.com/user/profile;而手动拼接的话,protocol是协议(比如https:),host是域名加端口(比如example.com或者localhost:4200),再加上路由路径,也能得到同样的结果。

方法二:使用Angular的DOCUMENT注入令牌(更符合Angular规范)

如果你想遵循Angular的依赖注入原则,避免直接操作全局的window对象(比如在服务端渲染SSR场景下更安全),可以使用Angular提供的DOCUMENT令牌:

首先在组件/服务中导入相关依赖:

import { DOCUMENT } from '@angular/common';
import { Inject } from '@angular/core';
import { Router } from '@angular/router';

然后在构造函数中注入DOCUMENT和Router:

constructor(
  @Inject(DOCUMENT) private document: Document,
  private _router: Router
) {}

接下来就能安全地获取完整URL了:

// 直接获取完整URL
const fullUrl = this.document.location.href;

// 或者手动拼接
const fullUrl = `${this.document.location.protocol}//${this.document.location.host}${this._router.url}`;

这两种方法都能帮你拿到包含协议、域名和完整路径的URL,根据你的项目场景选择就行~

内容的提问来源于stack exchange,提问作者r3plica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:19