0
votes

Impossible d'injecter le routeur dans httpterceptor (angulaire 7)

Je veux injecter le routeur angulaire dans mon httpterceptor. Malheureusement, l'erreur suivante est lancée dans la console du navigateur:

typeError: cela.Router est indéfini p> blockQuote>

J'ai ajouté ceci à mon constructeur comme d'habitude: p> xxx pré>

En outre, j'ai fait ce qui suit dans mon tableau de fournisseurs à l'intérieur de l'app.Module.ts : p> xxx pré>

Je souhaite utiliser l'URL actuelle à l'intérieur d'une instruction IF dans mon gestionnaire d'erreur pour fournir des fonctionnalités spécifiques pour différents itinéraires: P>

myErrorHandler(error: HttpErrorResponse) {
   if (this.router.url === 'test') {
     // do something
   } else {
     return throwError(error).pipe(
       // do something
     );
   }
}


3 commentaires

Pouvez-vous donner plus de contexte? Le code dans la question a l'air bien.


@Lemon j'ai mis à jour ma question. Je veux obtenir la route actuelle (URL) dans mon intercepteur et l'utiliser dans un gestionnaire d'erreurs.


@ CodeHan25 Avez-vous réussi à résoudre ce problème? Je rencontre le même problème avec la même configuration.


3 Réponses :


0
votes

Avez-vous fait cela? Trop évident? XXX


1 commentaires

Bien sûr :) Je pense qu'il y a quelque chose de spécial avec les intercepteurs mais je ne trouve rien dans les documents.



0
votes

Vous pouvez essayer d'utiliser l'injecteur.

constructor(inj: Injector) {
this.router = inj.get(AuthService) }


0 commentaires

2
votes

J'ai trouvé la réponse d'un autre sujet pertinent: Angulaire 6 Le service est indéfini après l'injection d'intercepteur

Fondamentalement, la variable de constructeur injecté n'est pas disponible dans la fonction que vous passez à la fonction CatchError code>. Vous devez accéder au routeur directement dans votre méthode Â'intercept 'comme ceci: p>

catchError(this.handleError)  // does not work because of different scope

catchError(err => this.handleError(err))  // works because of same scope


1 commentaires

Cela m'a sauvé du mal de tête.