我需要在Angular 2应用程序中获取浏览器中的当前URL。
在JavaScript中,我们通常使用window对象来完成。
如何使用TypeScript在Angular 2中执行此操作?
感谢。
答案 0 :(得分:37)
这已经很晚了,但我觉得值得更新。从Angular2最终版本开始,您可以从@ angular / common导入DOCUMENT并使用它来到达该位置。
import { Component, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
...
export class YourComponent {
constructor(@Inject(DOCUMENT) private document: Document) {
console.log(this.document.location.href);
}
}
答案 1 :(得分:20)
没有必要导入复杂的包或注入一些东西。只需使用window.location
上可以找到的方法!
如:
window.location.href
为您提供完整的网址window.location.hostname
为您提供主机名window.location.origin
使用此命令可以获得带协议的主机名(例如https://)对于IE< = 10个用户:location.origin可能无法使用,那么您必须使用
location.protocol + "//" + location.hostname
或使用填充或包裹,如click me
答案 2 :(得分:6)
导入ActivatedRoute,(如果需要,也可以导入路由器的其余部分)
import { ActivatedRoute, Params, Router, UrlSegment } from '@angular/router';
确保将其注入构造函数,
constructor(private route: ActivatedRoute) { ... }
并且在ngOnInit上,您可以使用this.route
来检查网址。例如,所有段都在一个数组中,你可以像@ibgib建议的那样将它们串在一起,如下所示:
let path = this.route.snapshot.url.join('/');
给你类似"火星/卫星/恐惧症"。
答案 3 :(得分:5)
你可以
Location
并按location.path()
获取网址(另请参阅Location and HashLocationStrategy stopped working in beta.16)window.location.pathname
另见
How do I get the absolute path of the current page in Angular 2?
答案 4 :(得分:5)
对于未来的旅行者来说,很多其他答案都很棒。另一个选择,如果您想要路径名之前的所有内容(例如https://example.com
),那么您可以使用:
window.location.origin
这是关于您可以使用的不同window.location
属性的W3文章:
http://www.w3schools.com/js/js_window_location.asp
干杯!
答案 5 :(得分:3)
这Link帮助了我:
public static getCurrentAbsoluteSiteUrl(): string {
if (window
&& "location" in window
&& "protocol" in window.location
&& "pathname" in window.location
&& "host" in window.location) {
return window.location.protocol + "//" + window.location.host + window.location.pathname;
}
return null;
}