Je travaille sur une application dans Angular 6. Lorsque l'application est déployée, elle échange des données avec une base de données en ligne. Cependant, lorsque je travaille sur l'application, j'aimerais qu'elle échange des données avec une base de données locale. J'ai une configuration de service unique pour faire toute la communication, donc lorsque je travaille sur l'application, je peux simplement changer l'URL de base, mais je me demandais s'il y avait un moyen de rediriger ce service en développement, puis d'avoir il va à la base de données comme d'habitude dans l'environnement de production.

Je suis conscient que je peux ajouter un fichier proxy.conf.json, ce que je fais déjà pour accéder à une API en ligne distincte, donc je ne sais pas si c'est aussi simple que d'ajouter un autre élément à ce fichier json.

Je n'ai posté aucun exemple de code car il s'agit plus d'une question générale sur la méthodologie en angulaire par rapport à une question de ligne de code spécifique, mais je suis heureux de publier ce que les gens aimeraient voir pour clarification.

0
S.Slusky 15 avril 2020 à 13:32

2 réponses

Meilleure réponse

Tu peux faire une chose,

Vous pouvez configurer votre URL à la fois dans environment.ts et environment.prod.ts comme

environment = {
...
url: 'something.com/api',
...
}

Et l'utiliser comme

import { environment } from 'environment/environment';

const url = environment.url;

Cela vous donnera une URL différente pour la construction normale (environnement de développement) et la construction de production (déploiement d'env.)

Aussi, ne vous inquiétez pas d'utiliser uniquement environmet.ts dans l'instruction import, car lorsque vous créez un prod build, votre environnement.ts obtient le contenu de environment.prod.ts. vous utiliserez donc l'url de environment.prod.ts

1
Indrajeet 15 avril 2020 à 11:18

Dans Angular, vous avez accès à une fonction isDevMode() qui détermine si l'application est actuellement en mode dev.

Sur cette base, vous devriez pouvoir ajuster votre URL de base si nécessaire.

 import { isDevMode } from '@angular/core';
  private baseUrl: string = '';
    const devUrl: string = '...';
    const prodUrl: string = '...';

    if (isDevMode()) {
          this.baseUrl = devUrl
        }
        else {
          this.baseUrl = prodUrl
          };
1
Mike S. 15 avril 2020 à 10:38