javascript - Angular - 使用哈希策略时如何获取 URL?

标签 javascript angular url angular-router

在我的 Angular Route 中,我定义我正在使用哈希策略:

// app-routing-module.ts
@NgModule({
  imports: [
    RouterModule.forRoot(routes, {
      useHash: true
    })
  ],
//...

当我想测试当前的 Router url 时,我运行以下代码:

import { Router } from '@angular/router';
// ..

constructor(private _router: Router) {}

getUrl() {
  return this._router.url; // always return '/'
}

this._router.url 始终等于“/”。但是,如果我测试 window.location.href,我会得到不同的值(真正的完整网址)。

在使用哈希策略时,如何获取当前的router-url(以Angular方式,而不是通过窗口对象)?

最佳答案

您可以像这样使用PlatformLocation类:

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

constructor(private pLocation: PlatformLocation) { }

getUrl() {
  return (pLocation as any).location.href;
}

我编码(pLocation as any)的原因是location没有显示 typescript 智能感知,正如你所看到的,它没有显示在Angular docs中,但它就在那里,您可以使用它。

SIMPLE DEMO

关于javascript - Angular - 使用哈希策略时如何获取 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521977/

相关文章:

python - 如何检测从该站点请求数据的方法?

javascript - Internet Explorer (10, 11) 加载 Angular 2 应用程序非常慢

javascript - 如何在显示侧边栏时禁用背景并单击除侧边栏以外的任何地方将关闭侧边栏

Angular http请求可观察到的错误没有捕获错误?

java - 转义密码中的@字符

javascript - 在不重定向的情况下更改页面 url

javascript - 将 Map 复制到现有 Map 的最高效方法

javascript - jQuery 点击事件 : check if element is within parent div

angular - FIRESTORE (4.10.1) 内部断言失败 : AsyncQueue is already failed: The requested version (1) is less than the existing version (2)

angular - 带表单组的子 ControlValueAccessor 组件 - 表达式在检查后已更改