【发布时间】:2020-05-27 00:44:15
【问题描述】:
我有 3 个模块:App、Shared、Core 和 Admin 这是根对象:
export const routes: Routes = [
{path:'home', component:HomeComponent, canActivate:[AuthGuardService]},
{path:'detail/:id', component:DetailComponent},
{path: 'register', component: RegisterComponent},
{path:'login', component: LoginComponent},
{path:'', redirectTo:'login', pathMatch: 'full'},
{path:'**', pathMatch: 'full' ,redirectTo:'login'}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
核心模块,所有主要组件声明在哪里,所以这就像我的主模块,我在这里导入 appRoutingModule:
@NgModule({
declarations: [
HomeComponent,
DetailComponent,
RegisterComponent,
LoginComponent,
NavbarComponent
],
imports: [
SharedModule,
AppRoutingModule,
AdminModule
],
exports:[AppRoutingModule, NavbarComponent]
})
export class CoreModule {
//para evitar que este modulo seja importado mais que uma vez
constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
if (parentModule) {
throw new Error('CoreModule has already been loaded. You should only import Core modules in the AppModule only.');
}
}
}
app.Module
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
SharedModule,
CoreModule,
AdminModule
],
providers: [
DataService,
fakeBackendProvider,
AuthService,
AuthGuardService,
ShoppingCartService
],
bootstrap: [AppComponent]
})
export class AppModule { }
最后,管理模块和它的路由文件
@NgModule({
imports: [
SharedModule,
AdminRoutingModule
RouterModule.forChild([])
],
declarations: [AdminComponent],
exports:[AdminComponent],
providers:[AuthGuardService]
})
export class AdminModule { }
这是管理路由的配置文件:
export const adminRoutes: Routes = [
{path:'admin', component:AdminComponent , canActivate:[AuthGuardService] },
];
@NgModule({
imports: [RouterModule.forChild(adminRoutes)],
exports: [RouterModule]
})
export class AdminRoutingModule { }
我已经尝试了我能想象到的一切,导入、导出、声明……没有任何效果。当我点击 Admin 链接(登录时)时,系统无法识别路线,所以它给了我登录,因为那是所谓的通配符...
【问题讨论】:
标签: angular angular-routing angular-module