Pomagam w opracowaniu aplikacji internetowej angle2 za pomocą pakietu internetowego, a nasz obecny plan to otwarcie jakiegoś pliku do konfiguracji funkcjonalności naszej aplikacji (prawdopodobnie .json). Chodzi głównie o to, aby ludzie wdrażający naszą aplikację mogli łatwo zlokalizować plik, aby określić takie rzeczy jak: gdzie znajduje się ich interfejs API, czy chcą dodać niestandardowe arkusze stylów itp.Jak wstępnie załadować plik konfiguracyjny w angular2
Usługa, której używam do załadować mój plik config wygląda następująco:
//config.ts
@Injectable()
export class Config {
private static _config: Object;
private static _promise: Promise<any>;
constructor(private http: Http) {
Config._promise = this.load();
}
load() {
return new Promise((resolve, reject) => {
this.http.get(`./config/development.json`)
.map((response: Response) => response.json())
.catch((error: any) => {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
})
.subscribe((data) => {
Config._config = data;
resolve(true);
});
});
}
get(key: any) {
return Config._config[key];
}
}
i używam go do innej klasy usług:
//api.service.ts
@Injectable()
export class ApiService {
private URI: string;
constructor(private http: Http, private _config: Config) {
this.URI = this._config.get('apiUrl');
}
getCustomQueries(): Observable<any> {
return this.http
.get(`${this.URI}/CustomQuery`)
.map((response: Response) => {
let data = response.json();
return { QueryID: data.id, QueryName: data.name };
})
.catch(this.handleError);
}
}
Zastanawiam się, czy istnieje sposób, aby załadować config.ts albo:
- Przed ładowanie początkowe składnik główny aplikacji
- Przed ApiService zostanie instancja
- Przed metoda service ApiService pobiera nazywane
LUB
- Niektóre zupełnie inna sposób dodawania konfigurowalności do aplikacji kątowej2.
można uruchomić prostą usługę 'config' ze wszystkimi konfiguracjami, a następnie uzyskać do niej dostęp z dowolnego konfigurowalnego elementu. –
Jeśli dobrze rozumiem, próbowałem po prostu dodać Config do dostawców bootstrapped. Problem polega na tym, że wywołania ApiService są wykonywane przed zakończeniem ładowania Config, co zależy od pełnego załadowania Config. – JonJonH