Hola usuario de nuestro sitio, hallamos la solución a lo que necesitas, continúa leyendo y la hallarás aquí.
Solución:
No hay necesidad de una solución específica de angular2. Puedes usar el window.location.hostname
para obtener el nombre de host actual.
Tenga en cuenta, sin embargo, si no desea utilizar variables globales como el window
-Objeto directamente, puede proporcionar su propio Window
objeto, que luego puede ser inyectado.
Consulte esta muestra completa de Stackblitz Angular para obtener más detalles.
Respuesta actualizada para Angular 6+
Como han dicho otros, la respuesta original ya no funciona. Para Angular 6+, debe proporcionar un token de inyección, de modo que el window
-objeto también se puede resolver en la compilación AOT. De lo contrario, obtendrá el error “No se pueden resolver todos los parámetros”.
Recomiendo crear un WINDOW_PROVIDERS
array en un archivo separado como este:
import InjectionToken, FactoryProvider from '@angular/core';
export const WINDOW = new InjectionToken('window');
const windowProvider: FactoryProvider =
provide: WINDOW,
useFactory: () => window
;
export const WINDOW_PROVIDERS = [
windowProvider
]
los WINDOW_PROVIDERS
La constante se puede agregar a la providers
array en el AppModule
Me gusta esto:
@NgModule(
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [
WINDOW_PROVIDERS, // <- add WINDOW_PROVIDERS here
SampleService,
],
bootstrap: [AppComponent]
)
export class AppModule
En el SampleService
los window
El objeto se puede inyectar utilizando el token de inyección definido de esta manera:
import Injectable, Inject from '@angular/core';
import WINDOW from '../window.provider';
@Injectable()
export class SampleService
constructor(@Inject(WINDOW) private window: Window)
getHostname() : string
return this.window.location.hostname;
Respuesta original para Angular 2
Por lo tanto, debe configurar el proveedor para el Window
-objeto al arrancar su aplicación.
import provide from 'angular2/core';
bootstrap(..., [provide(Window, useValue: window)]);
Después de eso, puede usar el objeto de ventana y acceder al nombre de host de esta manera:
constructor(private window: Window)
var hostname = this.window.location.hostname;
Otra opción es usar DOCUMENT from @angular/platform-browser.
import DOCUMENT from '@angular/platform-browser';
constructor(@Inject(DOCUMENT) private document: Document)
let url = document.location.protocol +'//'+ document.location.hostname + ':my_port' );
Angular 2 más reciente solución de trabajo:
aplicación.módulo.ts
providers: [
provide: Window, useValue: window,
...
]
tuclase.ts
constructor(
@Inject(Window) private _window: Window
)
this._baseUrl = `http://$this._window.location.hostname:3333`;
;
Te mostramos las comentarios y valoraciones de los usuarios
Si entiendes que te ha resultado de ayuda este post, nos gustaría que lo compartas con el resto seniors así nos ayudas a difundir este contenido.