में सेवा के लिए डोमेन नाम पाने के लिए मैं एक ही सर्वर, एक और बंदरगाह पर बाकी api के लिए अनुरोध करने के लिए की जरूरत है।कैसे Angular2
कैसे मैं इस सेवा यूआरएल में पूरा नाम हार्डकोड बिना कर सकता है?
में सेवा के लिए डोमेन नाम पाने के लिए मैं एक ही सर्वर, एक और बंदरगाह पर बाकी api के लिए अनुरोध करने के लिए की जरूरत है।कैसे Angular2
कैसे मैं इस सेवा यूआरएल में पूरा नाम हार्डकोड बिना कर सकता है?
एक angular2 विशेष समाधान के लिए कोई ज़रूरत नहीं है। वर्तमान होस्टनाम प्राप्त करने के लिए आप window.location.hostname
का उपयोग कर सकते हैं।
नोट, हालांकि, यदि आप window
- वैश्विक रूप से वैश्विक चर का उपयोग नहीं करना चाहते हैं, तो आप अपना खुद का Window
ऑब्जेक्ट प्रदान कर सकते हैं, जिसे तब इंजेक्शन दिया जा सकता है। इसलिए आप जब अपने आवेदन bootstrapping Window
-object के लिए प्रदाता सेट करना होगा।
import {provide} from 'angular2/core';
bootstrap(..., [provide(Window, {useValue: window})]);
उसके बाद आप विंडो ऑब्जेक्ट का उपयोग करें और इस तरह से होस्ट नाम उपयोग कर सकते हैं:
constructor(private window: Window) {
var hostname = this.window.location.hostname;
}
यह मिलना चाहिए आप आरंभ:
import {LocationStrategy} from '@angular/common';
constructor(private locationStrategy:LocationStrategy) {
console.log(locationStrategy.prepareExternalUrl('xxx'));
}
एक अन्य विकल्प @ कोणीय/मंच-ब्राउज़र से डाक्यूमेंट उपयोग करने के लिए है।
import {DOCUMENT} from '@angular/platform-browser';
constructor(@Inject(DOCUMENT) private document) {
let url = document.location.protocol +'//'+ document.location.hostname + ':my_port');
}
कोणीय 2 नवीनतम काम कर समाधान:
app.module.ts
providers: [
{provide: Window, useValue: window},
...
]
youclass.ts
constructor(
@Inject(Window) private _window: Window
) {
this._baseUrl = `http://${this._window.location.hostname}:3333`;
};
मैं अपने app.component.ts
में निम्न कोड के साथ हासिल की :
import { Component, OnInit, Inject, Injectable } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
constructor(@Inject(DOCUMENT) private document: any) { }
ngOnInit() {
this.domain = this.document.location.hostname;
console.log(this.domain);
}
}
यह आपके कंसोल में डोमेन नाम मुद्रित करना चाहिए।
मैं window.location
का उपयोग करने की सलाह देता हूं क्योंकि अन्य ने कृपया कहा है।
हालांकि, आप भी तो जैसे कोणीय के सामान्य 'स्थान' पुस्तकालय के आयात और एक इंजेक्शन में यह उपयोग करके ऐसा कर सकते हैं:
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;
}
}
कोणीय के लिए
4 '@angular से आयात {LocationStrategy} का उपयोग '/सामान्य 'देखें https://angular.io/api/common/Location –
संकेत के लिए बहुत बहुत धन्यवाद। तब से कई चीजें बदल गई हैं: डी –