Ich habe die folgende Routing-Konfiguration in meiner App:Routing & Module
app.module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpModule,
AppRouting,
// Feature Modules
CoreModule,
AuthModule,
AdminModule,
SharedModule
],
bootstrap: [AppComponent]
})
app.routing.ts
const routes: Routes = [
{ path: '', redirectTo: 'admin', pathMatch: 'full' },
{ path: 'admin', loadChildren:() => AdminModule }
];
@NgModule({
imports: [
RouterModule.forRoot(routes, {preloadingStrategy: PreloadAllModules})
],
exports: [RouterModule]
})
admin.module.ts
@NgModule({
declarations: [
AdminComponent
],
imports: [
CommonModule,
FormsModule,
UserModule,
AdminRouting,
SharedModule
],
providers: [
UserService
]
})
admin.routing.ts
const routes: Routes = [
{ path: '', component: AdminComponent, canActivate: [AuthGuard], children: [
{ path: 'users', loadChildren:() => UserModule }
]}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [RouterModule]
})
user.module.ts
@NgModule({
declarations: [
UserComponent,
UserManageComponent,
UserListComponent
],
imports: [
CommonModule,
FormsModule,
UserRouting,
SharedModule
]
})
user.routing.ts
const routes: Routes = [
{ path: '', component: UserComponent, children: [
{ path: '', component: UserListComponent },
{ path: 'new', component: UserManageComponent },
{ path: ':id/edit', component: UserManageComponent }
]},
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [RouterModule]
})
Und es gibt das Problem:
Was ich meine Bewerbung Routing erwartet does:
/users => not a valid route
/users/new => not a valid route
/admin/users => valid route
/admin/users/new => valid route
/admin => valid route (should render AdminComponent)
Ich weiß nicht warum, aber wenn ich/users eingeben, rendern die Anwendungen UserComponent, was ist nicht das Verhalten, das ich möchte.
Ich möchte UserComponent nur von/admin/users zugreifen.
Kann mir jemand erklären warum?
Weil du alles dem Server-Betreiber sind Umleitung: '{Pfad: '', RedirectTo: 'admin', pathMatch: 'voll'}' – jonrsharpe
Das ist nicht das Problem. Selbst wenn ich diesen Pfad entferne, funktioniert die Anwendung immer noch nicht wie erwartet./Benutzer sollten nicht verfügbar sein, aber/admin/users. –
Bonus aus dem [style guide] (https://angular.io/guide/styleguide#style-02-12): * Beende den Dateinamen eines RoutingModules mit '-routing.module.ts' * (das CLI wird dies tun) Mach das für dich – Leo