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?
3 Réponses :
Utilisez la classe Angular Router pour obtenir l'URL actuelle:
currentUrl: string;
constructor(private router: Router){
this.currentUrl = this.router.url;
this.load();
}
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 ...
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);
}
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')
}
}
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 utiliserwindow.location.hostnamedans votre cas, cela pourrait être plus pertinent.