Meine Angular App ruft plötzlich nicht ngOnInit()
nach router.navigation()
, was bedeutet, dass meine Komponenten nicht richtig geladen werden. Ich dachte, dass dies möglicherweise auf einige Änderungen zurückzuführen ist, die ich vorgenommen habe, aber das Zurücksetzen der Änderungen hat das Problem nicht behoben.ngOnInit wird nicht nach router.navigate aufgerufen
Beispiel, bei dem die normale Navigation dazu führt, dass die Komponente nicht korrekt geladen wird; Diese Seite wird durch die folgende Codeliste navigiert: this.router.navigate(['/result', this.params.data._id]);
:
Neuladen der Seite, wird die Komponente korrekt geladen:
Hier einige meiner Codebeispiele sind,
app.module.ts
@NgModule({
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
AgGridModule.withComponents(
[SampleResultButtonComponent]
),
ChartsModule
],
declarations: [
AppComponent,
LoginComponent,
LogoutComponent,
SignupComponent,
FilesComponent,
NavbarComponent,
ProfileComponent,
UploadComponent,
SampleGridApplicationComponent,
SampleResultButtonComponent,
AssetGridApplicationComponent,
ResultComponent,
ResetPasswordComponent,
AssetComponentDetailComponent
],
bootstrap: [ AppComponent ],
entryComponents: [AssetComponentDetailComponent]
})
export class AppModule {}
app-routing.module.ts
@Injectable()
export class NoAuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate() {
const activeUser = Kinvey.User.getActiveUser();
if (activeUser) {
return true;
}
// Navigate to the login page
this.router.navigate(['/login']);
return false;
}
}
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate() {
const activeUser = Kinvey.User.getActiveUser();
console.log("AuthGuard, CanActivate");
if (!activeUser) {
return true;
}
// Navigate to the main page
this.router.navigate(['']);
return false;
}
}
const appRoutes: Routes = [
{
path: '',
component: NavbarComponent,
canActivate: [NoAuthGuard],
children: [
{ path: '', component: SampleGridApplicationComponent },
{ path: 'files', component: FilesComponent },
{ path: 'upload', component: UploadComponent },
{ path: 'profile', component: ProfileComponent },
{ path: 'sampleitems', component: SampleGridApplicationComponent },
{ path: 'assetitems', component: AssetGridApplicationComponent },
{ path: 'result/:id', component: ResultComponent}
]
},
{ path: 'login', component: LoginComponent, canActivate: [AuthGuard] },
{ path: 'logout', component: LogoutComponent },
{ path: 'signup', component: SignupComponent, canActivate: [AuthGuard] },
{ path: 'reset', component: ResetPasswordComponent, canActivate: [AuthGuard] }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes, {useHash: true})
],
exports: [
RouterModule
],
providers: [
AuthGuard,
NoAuthGuard
]
})
export class AppRoutingModule {}
EDIT Nach etwas mehr graben ich glaube, das Problem auf die Frage here verwandt ist jedoch die vorgeschlagene fix dieses Problem nicht behebt.
Können Sie Ihren Code angeben? – Edric
Aktualisiert mit Codelisten. – Mika571
Ihre Screenshots zeigen verschiedene geladene Komponenten ... Die erste zeigt 'SampleGridApplicationComponent' und die zweite zeigt' ResultComponent'. Ist das was du erwartest? – Empereol