【问题标题】:Is there an Angular 2 equivalent to Angular1's $location.absURL()? [duplicate]是否有与 Angular1 的 $location.absURL() 等效的 Angular 2? [复制]
【发布时间】:2016-03-30 20:42:09
【问题描述】:

有没有办法返回使用 Angular 2 编码的所有段的完整 url 表示?

根据 Angular 1 文档,$location.absUrl();将原样返回。

https://docs.angularjs.org/api/ng/service/$location

方法 absUrl();此方法仅是 getter。

返回完整的 url 表示,所有段编码根据 RFC 3986 中指定的规则。

// given url http://example.com/#/some/path?foo=bar&baz=xoxo 
var absUrl = $location.absUrl();  
// => "http://example.com/#/some/path?foo=bar&baz=xoxo"

【问题讨论】:

  • 不幸的是,我能找到的最接近的方法是注入 Location 然后执行:this.location.prepareExternalUrl(this.location.path()),它返回除“example.com”之外的所有内容
  • @RobLouie 是否有在任何地方使用此类代码的示例?我需要完全按照您的要求进行操作,但在导入“位置”的方式和位置方面遇到了问题。
  • 我不知道这个确切用例的示例,但在 Angular 2 文档中有一个注入和使用位置的示例:angular.io/docs/js/latest/api/router/Location-class.html

标签: angularjs angular


【解决方案1】:
import {LocationStrategy} from '@angular/common';

constructor(private location:LocationStrategy) {
  var fullPath = (<any>this.location)._platformLocation.location.href;
}

【讨论】:

  • 这对我有用。但是有没有“正确”的方法来获得这个?对任何人的演员都有点破解
【解决方案2】:
<script src="https://code.angularjs.org/2.0.0-beta.9/router.dev.js"></script>


import {LocationStrategy} from  '@angular/common'
// pre RC.2 import {LocationStrategy} from  'angular2/router'

constructor(private location:LocationStrategy) {
  this.location.prepareExternalUrl('http://example.com/#/some/path?foo=bar&baz=xoxo');
}

Plunker example

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2010-11-30
    • 2016-08-01
    • 2018-06-04
    • 1970-01-01
    • 2012-12-01
    • 2019-06-13
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多