Доброе утро, мой вопрос немного сложен;
мы находимся внутри app.module.ts , в частности, в RouterModule область:
RouterModule.forRoot([
{path: 'xxx/:xxx', component: XxxComponent},
{path: '', redirectTo: 'homepage', pathMatch: 'full'},
{path: 'homepage', component: HomepageComponent, resolve: {
answerCallHttp1: CallHttp1Resolve,
answerCallHttp2: CallHttp2Resolve,
answerCallHttp3: CallHttp3Resolve
}},
{path: 'error', component: ErrorComponent}
])
Теперь моя проблема заключается в следующем:
, учитывая, что answerCallHttp1, answerCallHttp2 и answerCallHttp3 имеют разное время отклика, например, answerCallHttp1 имеет гораздо более быстрое время отклика чем answerCallHttp2, который имеет намного более медленное время отклика;
как заставить все answerCallHttp * работать, а затем после выполнения всего answerCallHttp * можно ли загрузить компонент домашней страницы ??
как мне сказать код: "первый финал sh все решают после загрузки" HomepageComponent "??
ОБНОВЛЕНИЕ :
I пытался использовать этот метод, рекомендованный пользователем, но он генерирует бесконечное число l oop вызовов Http :
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> | Promise<any> | any {
return forkJoin({
auth: this.memory.isToken(),
userInfo: this.porcoDio.get(this.api + '/getUserInformation', {headers: new HttpHeaders({'Auth': this.memory.getToken()})}).subscribe(),
retailers: this.porcoDio.get(this.api + '/retailer', {headers: new HttpHeaders({'Auth': this.memory.getToken()}),params: new HttpParams().set('system_device', 'desktop').set('system_platform', this.getBrowserName())}).subscribe()
});
}
это все Разрешить :
callHttp1Resolve.ts
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any {return this.memory.isToken();}
callHttp2Resolv e.ts
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any {this.porcoDio.get(this.api + '/getUserInformation', {headers: new HttpHeaders({'Auth': this.memory.getToken()})}).subscribe(userInfo => {return userInfo;});}
callHttp3Resolve.ts
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any {this.porcoDio.get(this.api + '/retailer', {headers: new HttpHeaders({'Auth': this.memory.getToken()}), params: new HttpParams().set('system_device', 'desktop').set('system_platform', this.getBrowserName())}).subscribe(retailer => {return retailer;});}