Aynı sunucuya istekte bulunmalıyım, başka bir bağlantı noktasında dinlenmeliyim.Angular2'de hizmet için etki alanı adı nasıl alınır
Servis URL'lerinde tam adı kod yazmadan bunu nasıl yapabilirim?
Aynı sunucuya istekte bulunmalıyım, başka bir bağlantı noktasında dinlenmeliyim.Angular2'de hizmet için etki alanı adı nasıl alınır
Servis URL'lerinde tam adı kod yazmadan bunu nasıl yapabilirim?
. 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;
}
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'));
}
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');
}
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`;
};
benim app.component.ts
aşağıdaki kodla elde :
Bu, etki alanı adını konsolunuza yazdırmalıdır.
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çinimport { 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;
}
}
4+ @angular' dan 'ithalat {LocationStrategy} kullanabilirsiniz https://angular.io/api/common/Location –
/ipucuna bakın. O zamandan beri pek çok şey değişti: D –