Je travaille dans angulaire 4 et j'ai un appConfigService qui fournit l'URL de l'application api à partir d'un fichier settings.json, quelque chose comme:Service angulaire au démarrage et demande la dépendance
private appConfig: AppConfig;
constructor(private http: Http) {
this.loadConfig().subscribe(e => this.appConfig = e);
}
public loadConfig(): Observable<AppConfig> {
return this.http
.get("appsettings.json")
.map(this.mapAppConfig)
.catch(this.handleError);
}
puis-je utiliser cette URL pour toutes mes demandes suivantes.
Cela fonctionne très bien pour les demandes envoyées après que l'URL a été retourné, mais j'ai des problèmes avec les demandes envoyées lorsque la page se charge (et l'URL n'a pas encore été récupérée).
Je sais que je peux utiliser la fonction flatmap dans les services qui se chargent au démarrage, mais je me retrouve essentiellement la création de deux implémentations de la même fonction:
private getBasicRequest(offset: number = 0, limit:number = 0): Observable<Response>{
if (!this.appConfigService.isAppConfigValid()) {
var urlObserver = this.appConfigService.loadConfig();
var request = urlObserver
.flatMap(responseFromConfigService =>
this.http.get(responseFromConfigService.apiBaseAddress + "/entries/" + this.searchTerm + "?offset=" + offset + "&limit=" + limit));
return request;
} else {
var url = this.appConfigService.getApiLink("entries/" + this.searchTerm + "?offset=" + offset + "&limit=" + limit);
return this.http.get(url);
}
}
Quelle serait une meilleure façon de traiter ce scénario? J'ai essayé de faire démarrer le service appConfigService au démarrage, ce qui résoudrait mon problème, mais cela n'a pas fonctionné.
Vous pouvez utiliser https://stackoverflow.com/questions/37611549/how-to- pass-paramètres-rendu-de-backend-à-angulaire2-bootstrap-méthode/37611614 # 37611614 ou https://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the- résultat-d'un-angulaire-2-http-network-call-in/36291681 # 36291681 –