Saltar al contenido

Obtener el nombre de dominio para el servicio en Angular2

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 SampleServicelos 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *