J'ai un problème en ce qui concerne la mise en œuvre d'un résolveur sur mes routes car il n'a pas de problème jusqu'à ce que j'inclus InitialDataResolver
sur mon module de routage.
pages-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { FrontComponent } from '../layouts/front/front.component';
import { HomeComponent } from './home/home.component';
import { DocsComponent } from './docs/docs.component';
import { InitialDataResolver } from './../shared/resolvers/initial-data.resolver';
const routes: Routes = [
{
path: '',
component: FrontComponent,
children: [
{ path: '', component: HomeComponent },
{ path: 'docs', component: DocsComponent }
],
resolve: {
init: InitialDataResolver
},
}
];
@NgModule({
imports: [ RouterModule.forChild(routes) ],
exports: [ RouterModule ],
providers: [ InitialDataResolver ]
})
export class PagesRoutingModule { }
initial-data.resolver.ts
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
import { Observer } from 'rxjs/Observer';
import { AppInitService } from '../services/app-init.service';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class InitialDataResolver implements Resolve<any> {
constructor(private appInitService: AppInitService) {}
resolve(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<any> {
return Observable.create((observer: Observer<any>) => {
this.appInitService.init()
.subscribe(data => {
this.appInitService.preload();
observer.next(data);
observer.complete();
});
});
}
}
L'erreur que je rencontre est ERROR Error: "[object Object]"
. voir l'instantané ci-dessous:
Ce manque d'erreur détaillée s'est produit lors de l'utilisation de Mozilla Firefox
. vous devez donc basculer sur Google Chrome
pour voir l'erreur spécifique.
Pour plus de détails, consultez ce lien pour en savoir plus.
Cette erreur est due à une mauvaise déclaration de routeur. Aussi erreur exacte ne viendra jamais dans Firefox. Vérifiez le fichier de route en chrome. # angularjs-route
L'erreur pourrait masquer des détails sur Firefox si vous construisez sans --prod et hôte sur un serveur Web, essayez de construire avec --prod si vous hébergez un serveur Web pour obtenir des détails sur l'erreur.
resolve(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<any> {
return Observable.create((observer: Observer<any>) => {
this.appInitService.init()
.subscribe(data => {
this.appInitService.preload();
observer.next(data);
observer.complete();
});
}).map(item => !!item)
}
Le code ci-dessus fonctionnera pour vous.
si votre version de rxjs est 6.x, vous utiliserez .pipe(map(item => !!item))
solution unique: trouver la fonction defaultErrorLogger dans dist/vendor.bundle.js et ajouter
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
console.log(arguments);
console.error.apply(console, values); code here
puis actualisez la page sans recompiler