Saltar al contenido

Constantes completamente externas en Angular 5 usando algún archivo de configuración

Solución:

Tengo la siguiente solución. Utiliza un archivo de configuración JSON externo.

Así que primero crea un JSON en activos / carpeta de datos.

config.json:

{“serverPath”: “http://10.0.0.126:3031”}

Luego léalo y analícelo.

config.service.ts:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

import { Observable } from 'rxjs/Observable';

@Injectable()
export class ConfigService {

  private configUrl = "assets/data/config.json";

  constructor(private http: HttpClient) {
  }

  public getJSON(): Observable<any> {
    return this.http.get(this.configUrl)
  }

  public getSavedServerPath(){
    return localStorage.getItem('serverPath');
  }
}

En app.module.ts necesitas importar HttpClientModule para que esto funcione.

Luego, puede guardar serverPath en LocalStorage en el componente de inicio de sesión, por ejemplo.

login.component.ts:

  constructor(public loginService:LoginService, public configService:ConfigService, private router: Router) {
  }

  ngOnInit() {

    this.configService.getJSON().subscribe(data => {
      localStorage.setItem("serverPath", data["serverPath"]);
    });

    ...
  }

Después de eso, puede acceder a serverPath en todos sus otros servicios.

server.service.ts:

import {Injectable } from '@angular/core';
import {Headers, Http, Response} from '@angular/http';
import 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
import {ConfigService} from '../services/config.service';

@Injectable()
export class ServerService {

  private serverPath:string;

  constructor(public configService: ConfigService, private http:Http) {
    this.serverPath = this.configService.getSavedServerPath();
  }
  ...
}

Después de una construcción, verá assets / data / config.json archivar en tu dist carpeta. Copia todos tus dist carpeta a su hosting y todos los trabajos.

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



Utiliza Nuestro Buscador

Deja una respuesta

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