2017-10-20 4 views
-1

Dans mon application, j'ai une demande d'initialisation XHR et j'aimerais que l'ensemble de l'application attende la fin de ce XHR. Pensez-y comme l'initialisation de l'application. J'utilise angular-cli donc j'ai les fichiers et la structure standard.L'application doit-elle attendre le chargement XHR initial?

Au sommet, je app.component.html qui ne contient qu'une seule ligne: <router-outlet></router-outlet>

J'ai essayé d'obtenir un garde de route pour travailler, mais ce sont vérifier lorsqu'un itinéraire est utilisé.

Tous les points seraient utiles.

+0

Quelque chose comme [ce] (https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e)? –

Répondre

0

Une raison spécifique de ne pas utiliser HttpClient ??

J'utilise un observable pour cela. C'est une façon de s'y prendre.

Dans votre fichier de service:

1 - Créer un BehaviorSubject
letThemKnow = new BehaviorSubject<boolean>(false);
2 - Retour observable de la fonction que vous appelez HttpClient ou XHR similaire au code ci-dessous.

fetchData(): Observable<any> { return this.http.get<T>(URL). });

à app.components.ts et à l'intérieur ngOnInit fetchData d'appel() et abonnez-vous pour que

this.yourService.fetchData().subscribe(() => { this.yourservice.letThemKnow.next(true); });

alors à chaque fois sur votre application que vous devez commencer après les données ou l'application a été prêt . Abonnez-vous et vérifiez TRUE sur ce service.

quelque chose de semblable à ceci.
this.yourservice.letThemKnow.subscribe((state: boolean) => { if (state) { //do this }

ici pour RxJs http://reactivex.io/rxjs/