0
votes

comment lire l'URL actuelle dans Angular

Je suis assez nouveau dans la programmation et mon manager m'a demandé de faire quelque chose que je ne sais pas vraiment faire. J'ai besoin de créer une fonction qui lira l'URL et donc de savoir quel environnement est en cours de construction. La fonction doit ensuite insérer l'environnement correct dans la fonction de chargement, qui a maintenant le code suivant:

const jsonFile = assets/config/config.${currentUrl.name}.json;

Quelqu'un peut-il me dire comment extraire l'URL actuelle? Une fois que j'ai cela, ma fonction ressemblerait à ceci:

configUrl() {
var currentUrl =

Je changerais alors la fonction de chargement en remplaçant le fichier const actuel par quelque chose comme ceci:

XXX

Est-ce que cela a du sens? Quelqu'un peut-il m'aider?


5 commentaires

window.location.href ?


this.router.url


En réalité, la fonction doit d'abord lire l'URL actuelle, puis extraire l'environnement de celui-ci, puis insérez-le dans la fonction de charge ...


ActivatedRoute, c'est dans le guide. Sur mobile, on ne peut pas donner une meilleure réponse


@HeidiEigner Où avez-vous besoin de l'URL actuelle? dans la fonction de chargement? Ensuite, dans votre fonction de chargement, vous obtenez l'url actuelle window.location.href , puis vous l'analysez en fonction de ce dont vous avez besoin (l ' environnement ). Notez que vous pouvez également utiliser window.location.hostname dans votre cas, cela pourrait être plus pertinent.


3 Réponses :


1
votes

Utilisez la classe Angular Router pour obtenir l'URL actuelle:

currentUrl: string;

constructor(private router: Router){
    this.currentUrl = this.router.url;
    this.load();
}


1 commentaires

window.location.hostname fonctionne parfaitement. Ma fonction fonctionne. Première fonction que je faisais tout seul ... dans le passé, je copiais généralement ce que je voyais en ligne ou auprès de collègues. Je sais que c'est ridiculement mineur, mais ça fait quand même du bien. Merci à tous ceux qui ont répondu. Je le poste, car il y a peut-être des façons plus élégantes de l'écrire, mais cela fonctionne ...



0
votes
load() {
        // const jsonFile = `assets/config/config.${environment.name}.json`;
      this.configEnv()
      const jsonFile = `assets/config/config.${this.currentEnv}.json`;
      console.log(`Loading file ${jsonFile}`)
        return new Promise<void>((resolve, reject) => {
            this.http.get(jsonFile).toPromise().then((response : IAppConfig) => {
               AppConfig.settings = <IAppConfig>response;
               resolve();
            }).catch((response: any) => {
               reject(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
               console.log(jsonFile);
            });
        });
    }


    configEnv() {
          this.currentUrl = window.location.hostname;
          if(this.currentUrl.includes('local')) {
            this.currentEnv = 'local'
          } else if (this.currentUrl.includes('prd')) {
            this.currentEnv = 'prod'
          } else if (this.currentUrl.includes('dev')) {
            this.currentEnv = 'dev'
          } else {console.log('no environment found!')}

          console.log(this.currentUrl);
        }

0 commentaires

0
votes
 configEnv() {
      this.currentUrl = window.location.hostname;
      switch (true) {
        case this.currentUrl.includes('local'):
          this.currentEnv = 'local'
          break;
        case this.currentUrl.includes('prd'):
          this.currentEnv = 'prod'
          break;
        case this.currentUrl.includes('dev'):
          this.currentEnv = 'dev'
          break;
        // default:
        //   this.currentEnv = ('127.0.0.1:8090')
      }
    }

0 commentaires