2016-03-25 29 views

cevap

19

. Geçerli ana bilgisayar adını almak için window.location.hostname'u kullanabilirsiniz.

Not Ancak, window -object gibi global değişkenleri doğrudan kullanmak istemiyorsanız, kendi Window nesnesini sağlayabilirsiniz, bu da daha sonra enjekte edilebilir. Bu nedenle, uygulamanızı önyükleme yaparken Window sağlayıcısının sağlayıcıyı ayarlamanız gerekir.

import {provide} from 'angular2/core'; 
bootstrap(..., [provide(Window, {useValue: window})]); 

Bundan sonra pencere nesnesini kullanabilir ve bunun gibi hostname erişmek:

constructor(private window: Window) { 
    var hostname = this.window.location.hostname; 
} 
1

Bu başlangıç ​​almalısınız: Bir angular2 özgü çözüm için gerek yok

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

constructor(private locationStrategy:LocationStrategy) { 
    console.log(locationStrategy.prepareExternalUrl('xxx')); 
} 
+1

4+ @angular' dan 'ithalat {LocationStrategy} kullanabilirsiniz https://angular.io/api/common/Location –

+0

/ipucuna bakın. O zamandan beri pek çok şey değişti: D –

9

Diğer bir seçenek açısal/platformu tarayıcı @ dan BELGE kullanmaktır.

import {DOCUMENT} from '@angular/platform-browser'; 

constructor(@Inject(DOCUMENT) private document) { 
    let url = document.location.protocol +'//'+ document.location.hostname + ':my_port'); 
} 
7

Eğik 2 son çalışma çözeltisi:

providers: [ 
    {provide: Window, useValue: window}, 
    ... 
] 

youclass.ts app.module.ts

constructor(
    @Inject(Window) private _window: Window 
) { 
    this._baseUrl = `http://${this._window.location.hostname}:3333`; 
}; 
2

benim app.component.ts aşağıdaki kodla elde :

Bu, etki alanı adını konsolunuza yazdırmalıdır.

0

Diğerlerinin belirtmiş olduğu gibi window.location kullanmanızı öneririz.

Ancak, ayrıca şöyle enjektabl içinde açısal ortak 'Konum' kütüphane ithal ve bunu kullanarak bunu yapabilirsiniz:

açısal için
import { Injectable } from '@angular/core'; 
import { Location } from '@angular/common'; 
const otherPort = 8000; 

@Injectable() 
export class ServiceOrComponentName { 
    constructor(location: Location) { 
    this.baseUrl = location._platformStrategy._platformLocation._location.protocol + 
     '//' + location._platformStrategy._platformLocation._location.hostname + 
     ':' + otherPort; 
    } 
} 
İlgili konular