【问题标题】:How to get the page hostname in Angular 2?如何在 Angular 2 中获取页面主机名?
【发布时间】:2016-08-10 05:00:25
【问题描述】:

我需要在 Angular 2 中获取页面的子域,因为它与路由相关。我看到在多次发布后,Angular 2 中的路由器服务仍然没有域的概念。同样,位置服务不知道 URL 的主机部分。

【问题讨论】:

  • 顺便说一句。我知道我可以做 window.location.host.split('.')[0] 。我只是希望在 Angular2 中有一种更合适的方法。

标签: angular2-routing


【解决方案1】:

没有获取当前主机的方法。

如果您不想直接使用window.location,您可以注入它,即如果您只需要主机,您可以将以下内容添加到模块提供程序中:

{ provide: 'HOST', useValue: window.location.host }

然后你可以将它注入到组件或服务中:

constructor(@Inject('HOST') private host: string) { }

当然你可以提供整个window对象:

{ provide: Window, useValue: window }

然后注入它:

constructor(private window: Window) { }

更新

第一个选项不适用于 AOT 构建,您应该改用工厂:

export function hostFactory() { return window.location.host; }

然后提供者:

{ provide: 'HOSTNAME', useFactory: hostFactory }

【讨论】:

  • 您更新的解决方案是最好的解决方案,因为您可以在测试中模拟它。
【解决方案2】:

我只是用这个得到了主机名: window.location.hostname

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2017-11-11
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多