webentwicklung-frage-antwort-db.com.de

Änderungen des Throttling-Verlaufsstatus verhindern, dass der Browser hängen bleibt

Dies ist eine Anfängerfrage.

Meine Angular-Anwendung besteht aus mehreren Feature-Modulen. Ich habe authguard verwendet, indem ich Guard aus dem angle-cli generiert habe, und dann verwende ich CanActivate in meinem App-Routing-Modul wie folgt:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AuthGuard } from './auth.guard';

const routes: Routes = [
{path:'login',loadChildren:'./login/login.module#LoginModule',canActivate: 
[AuthGuard]},
{path:'home', loadChildren:'./user/user.module#UserModule',canActivate: 
[AuthGuard]},
{path:'cart', 
loadChildren:'./cart/cart.module#CartModule',canActivate:[AuthGuard]},
 {path:'customer',loadChildren:'./customer/customer.module#CustomerModule',canActivate:[AuthGuard]}
];

@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }

In meinem Auth Guard habe ich die Bedingung geschrieben, um den Benutzer daran zu hindern, auf nicht autorisierte Routen zuzugreifen:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from 
'@angular/router';
import { Observable } from 'rxjs/Observable';
import { Router } from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean 
{
  if(["user","customer","cart"].indexOf(localStorage.pass)>=0){alert("auth 
guard!");
return true;}
else 
this.router.navigate(['/login']);
}
}

nach dem Bauen erhalte ich eine Warnung WARNUNG in Duplizierter Pfad in loadChildren, die während eines Wiederaufbaus entdeckt wurden. Wir nehmen die neueste erkannte Version und überschreiben sie, um Zeit für den Neuaufbau zu sparen. Sie sollten einen vollständigen Build durchführen, um zu überprüfen, dass sich Ihre Routen nicht überschneiden.

Also googelte ich und fand diesen Kommentar , nachdem der letzte Pfad mit Komma versehen wurde, verschwand die Warnung.

Danach habe ich mich bei meiner Anwendung angemeldet und die folgende Meldung wurde in der Konsole angezeigt: Der Status des Throttling-Verlaufs ändert sich, um zu verhindern, dass der Browser Hängt und die App stecken bleibt. 

Irgendwelche Ideen warum?

EDIT: Ich habe es endlich geschafft, indem ich 'canLoad' anstelle von 'canActivate', Benutze, aber es wäre toll, wenn jemand mehr Einblick in dieses Problem geben könnte.

9
Vibhu

Löschen Sie canActivate in der Login-Route. Es ist eine Schleife.

15
Paqura

Überprüfen Sie im Guard, dass einer der Pfade versucht, mehrere Male als Schleife zu laden. Dies war mein Problem.

3

In meinem Fall hatte ich eine Endlosschleife. 

Wenn Sie in Ihrem Routing einen Platzhalter (*) verwenden, stellen Sie sicher, dass es der letzte in der Liste ist. Sie sollten zuerst alle anderen Routen definieren.

{ path '/', component: HomeComponent },
{ path 'profile', component: ProfileComponent },
// All your other routes should come first    
{ path: '404', component: NotFoundComponent },
{ path: '**', component: NotFoundComponent }
3
Enrico

Ich hatte kürzlich ein ähnliches Problem und beim Beobachten Ihres Codes fielen mir zwei Dinge auf: - Sie platzieren den Authguard im Anmeldepfad, obwohl der Zugriffspfad ist .- Sie geben keinen negativen Wert in der Wache zurück , leiten Sie einfach um.

Versuchen Sie, diese beiden Dinge zu reparieren, und vielleicht hilft es. Ich hatte ein Problem, als ich im negativen Fall keinen Wert zurückgab und es das gleiche Problem verursachte, das Sie haben.

2
bab2683

Ich hatte diese Ausgabe bereits den ganzen Tag. Fand auch diesen offiziellen Beitrag , aber das Problem kann hier nicht eindeutig erklärt werden.

Ich habe das Problem debuggt und festgestellt, dass meine canActivate-Funktion einen Fehler aufwies, der auf eine Eigenschaft eines Objekts zuzugreifen versuchte, die nicht initialisiert wurde. Ich habe nichts davon mitbekommen, und nach diesem Fehler (den Sie in der Konsole nicht sehen werden) wurde das Problem "Throttling History Status ändert sich, damit der Browser nicht hängen bleibt" ausgelöst.

Nur meine 2 Cent: Stellen Sie sicher, dass Sie keine Fehler in der Funktion canActivate oder canDeactivate haben.

Hoffe, dass es jemandem hilft!

Prost

0
Miguel .Soler