Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

304
Visualizações
Obtener el nombre de dominio para el servicio en Angular2

Necesito hacer una solicitud al mismo servidor, REST API en otro puerto.

¿Cómo puedo hacer esto sin codificar el nombre completo en las URL del servicio?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No hay necesidad de una solución específica de angular2. Puede usar window.location.hostname para obtener el nombre de host actual.

Tenga en cuenta, sin embargo, que si no desea utilizar variables globales como el objeto window directamente, puede proporcionar su propio objeto Window , que luego se puede inyectar.

Consulte esta muestra completa de Stackblitz Angular para obtener más información.

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 objeto de la window también se pueda resolver en la compilación AOT . De lo contrario, obtendrá el error "No se pueden resolver todos los parámetros".

Recomiendo crear una matriz WINDOW_PROVIDERS en un archivo separado como este:

 import { InjectionToken, FactoryProvider } from '@angular/core'; export const WINDOW = new InjectionToken<Window>('window'); const windowProvider: FactoryProvider = { provide: WINDOW, useFactory: () => window }; export const WINDOW_PROVIDERS = [ windowProvider ]

La constante WINDOW_PROVIDERS se puede agregar a la matriz de providers en AppModule de esta manera:

 @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule ], providers: [ WINDOW_PROVIDERS, // <- add WINDOW_PROVIDERS here SampleService, ], bootstrap: [AppComponent] }) export class AppModule { }

En SampleService , el objeto de la window 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 objeto Window al iniciar 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; }
over 4 years ago · Santiago Trujillo Relatório

0

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' ); }
over 4 years ago · Santiago Trujillo Relatório

0

Puede usar window , como han dicho otros, y para hacerlo inyectable, desde ng6 en adelante, necesita un token de inyección.

Declare el token de esta manera:

 export const WINDOW = new InjectionToken('window', { providedIn: 'root', factory: () => window } );

Luego úsalo en el constructor de clases:

 class Foo { constructor(@Inject(WINDOW) private window: Window) { } }

Como Window es una interfaz en TypeScript, si no realiza la inyección de esa manera, cuando construya el proyecto para producción obtendrá un error: Can't resolve all parameters for <ClassName> . Y luego otro: ERROR in : Error: Internal error: unknown identifier undefined .

Para comprender mejor la inyección, lea los documentos angulares para DI: https://angular.io/guide/dependency-injection

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda