She*_*i M 4 router login angular
使用Angular 4的路由和我的功能的单独文件/模块,我试图让我的应用程序始终首先显示登录屏幕,然后在用户登录后切换到我的主视图(所有路由都通过身份验证保护,除了登录一个).
我在Plunker中创建了一个测试应用程序,在应用程序中有关于我需要的功能的注释,而不是目前正在发生的事情:https: //plnkr.co/edit/MGIGH4xpKZOtgCBl5lam
我对大多数示例代码(如此代码)所遇到的问题是,登录后路由到的组件没有任何嵌套视图.我通过将所有路由放在一个文件中来使我的应用程序工作,但我更喜欢拆分每个功能的路由.然而,一旦我这样做,事情开始变得不稳定:
但它很接近 - 在网址中输入"club"或"members"将强制显示登录页面,当我点击登录按钮时,它将显示正确的页面,嵌套在主导航视图中.然后我可以使用主导航链接在"俱乐部"和"成员"之间来回翻转并注销.
我认为问题可能与我正在进行延迟加载的方式有关吗?
const routes: Routes = [
{ path: '', component: MainNavComponent,
canActivate: [AuthGuard],
children: [
{ path: 'club', loadChildren: 'app/club.module#ClubModule'},
{ path: 'members', loadChildren: 'app/members.module#MembersModule'},
{ path: '', redirectTo: 'club', pathMatch: 'full' }
]
}
];
Run Code Online (Sandbox Code Playgroud)
我按照angular.io路由文档和这些建议来使它工作正常,但我无法弄清楚最后一点是搞砸了.我真的很感激任何帮助!
我解决了各种问题,并将其添加到下面的演示中.
@NgModule({
declarations: [
AppComponent,
PageNotFoundComponent
],
imports: [
BrowserModule,
AuthModule,
// ClubModule,
// MainNavModule,
// MembersModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
// club-routing.module.ts
const routes: Routes = [
{ path: '', component: ClubComponent }
];
Run Code Online (Sandbox Code Playgroud)
// members-routing.module.ts
const routes: Routes = [
{
path: '',
component: MembersComponent,
canActivate: [AuthGuard],
children: [
{ path: ':id', component: MemberDetailComponent }
]
}
];
Run Code Online (Sandbox Code Playgroud)
// app-routing.module.ts
const routes: Routes = [
{ path: '', loadChildren: 'app/main-nav.module#MainNavModule' },
{ path: 'login', component: LoginComponent },
{ path: '**', component: PageNotFoundComponent }
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7094 次 |
| 最近记录: |